gpt4 book ai didi

python - 如何在PyQt5中连接QFileSystemModel dataChanged信号?

转载 作者:行者123 更新时间:2023-11-30 22:52:05 36 4
gpt4 key购买 nike

我正在尝试连接 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 中连接此信号?

最佳答案

如果没有任何重载,则无需显式选择信号。所以正确的信号连接方式是这样的:

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

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

    self.model.dataChanged[QtCore.QModelIndex, QtCore.QModelIndex, "QVector<int>"].connect(self.dataChanged)

关于python - 如何在PyQt5中连接QFileSystemModel dataChanged信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38779112/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com