QVariantList除了使用正则表达式可能会失败之外,您还必须使用list而不是list,就我而言,我使用Linux并产生问题,因此正确的做法是使用
QUrl:
class File(QtCore.QObject): filenameChanged = QtCore.Signal() sheetnamesChanged = QtCore.Signal() def __init__(self, *args, **kwargs): super(File, self).__init__(*args, **kwargs) self.__filename = "" self.__sheetnames = list() @QtCore.Slot(str) def load(self, filename): self.__filename = QtCore.QUrl(filename).toLocalFile() # Load the worksheet using openpyxl. try: workbook = openpyxl.load_workbook(filename=self.__filename) except openpyxl.utils.exceptions.InvalidFileException as exception: # Todo: write pre to pass error to the user. print('Invalid File') return self.__sheetnames = workbook.sheetnames print(workbook.sheetnames) @QtCore.Property(str, notify=filenameChanged) def filename(self): return self.__filename @filename.setter def get_filename(self, name): if name == self.__filename: return self.__filename = name self.filenameChanged.emit() @QtCore.Property('QVariantList', notify=sheetnamesChanged) def sheetnames(self): return self.__sheetnames @sheetnames.setter def set_sheetnames(self, names): if names == self.__sheetnames: return self.__sheetnames = names[:] self.sheetnamesChanged.emit()输出:
['Periodic Table']qml: /home/eyllanesc/Downloads/Ultimate Periodic Table1.xlsxqml: [Periodic Table]



