您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在pyside2中将Python列表属性注册到QML

在pyside2中将Python列表属性注册到QML

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 code 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.xlsx
qml: [Periodic Table]
python 2022/1/1 18:47:50 有443人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶