如何连接PyQt5中的QFileSystemModel dataChanged信号?

2024-09-25 14:27:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试连接QFileSystemModel.dataChanged信号,但到目前为止还没有成功。下面的代码正在生成此错误:

TypeError: bytes or ASCII string expected not 'list'

import sys

from PyQt5 import QtGui, QtWidgets, QtCore
from PyQt5.QtWidgets import QFileSystemModel, QTreeView
from PyQt5.QtCore import QDir

class DirectoryTreeWidget(QTreeView):

    def __init__(self, path=QDir.currentPath(), *args, **kwargs):
        super(DirectoryTreeWidget, self).__init__(*args, **kwargs)

        self.model = QFileSystemModel()
        self.model.dataChanged[QtCore.QModelIndex,QtCore.QModelIndex,[]].connect(self.dataChanged)

    def dataChanged(self, topLeft, bottomRight, roles):
        print('dataChanged', topLeft, bottomRight, roles)


def main():
    app = QtWidgets.QApplication(sys.argv)
    ex = DirectoryTreeWidget()
    ex.set_extensions(["*.txt"])

    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

如何在PyQt5中连接此信号?在


Tags: fromimportself信号maindefsyspyqt5
1条回答
网友
1楼 · 发布于 2024-09-25 14:27:40

如果没有任何重载,则不需要显式地选择信号。所以正确的信号连接方式如下:

    self.model.dataChanged.connect(self.dataChanged)

但在任何情况下,当您需要选择签名时,必须传入表示类型的类型对象或字符串。在您的特定情况下,必须使用字符串,因为第三个参数没有对应的类型对象。因此,上述信号连接的明确版本为:

^{pr2}$

相关问题 更多 >