我花了比我愿意承认的时间更长的时间来为这个主题考虑一个合适的“问题”标题,因为我的问题有点难以表达。
以下是情况的快速摘要:
- 我正在用 Python 3.4 和 PySide 编写一个基本的 GUI
- 我正在使用 QFileSystemWatcher 来监视特定文件
- 当文件更改时,QFileSystemWatcher 调用一个方法,该方法又调用 PySide 类中的一个方法
- 除了 PySide Class 方法中详述的特定于 GUI 的操作没有被执行(我将在下面更详细地解释)之外,上述所有操作似乎都运行良好。
示例代码:
#Establishing the PySide GUI Class
class GUI(QMainWindow, Ui_GUI):
def __init__(self, parent=None)
super(GUI, self).__init__(parent)
self.setupUi(self)
QtCore.QObject.connect(self.Button, QtCore.SIGNAL("clicked()"), self.Run)
def Run(self):
print("1")
self.treeWidget1.clear()
self.treeWidget2.clear()
print("2")
self.label1.setText("Text 1")
self.label2.setText("Text 2")
print("3")
for y in range(0, 5):
self.treeWidget1.resizeColumnsToContents()
print("Finished")
#Establish the file monitoring mechanism, *outside* the PySide class
def FileChanged():
Script = GUI()
Script.Run()
Paths = ['path/to/file']
Watch = QtCore.QFileSystemWatcher(Paths)
Watch.fileChanged.connect(FileChanged)
#Setting up the GUI
if __name__ == '__main__':
app = QApplication(sys.argv)
showGUI = GUI()
showGUI.show()
app.exec_()
正如我上面提到的,上面的代码不会返回任何错误。当我更改文件(在路径中列出)时,FileChanged 确实从 GUI 类调用 Run() 方法。但是,它实际上不会做任何“东西”,它只会在“东西”之间执行打印命令。
如果我然后单击 GUI 中的“按钮”,它将正确执行 Run(),并正确执行所有“东西”。
我的问题:我在这里缺少什么吗?如果它正确调用该方法,并且能够执行各种“打印”命令,为什么它不执行实际的“东西”?
谢谢!
编辑 1:我删除了 -do stuff- 标签并放入了一些示例代码。所有“东西”代码都与更新各种 PySide QLabels、QTreeWidgets 等有关。
编辑 2:我忘记了 treeWidget 清除命令末尾的 ()。