我花费的时间比我关心的还要多,因为我的问题有点难以表达。在Python/PySide中调用类方法
这里的形势的快速摘要:
- 我正在写一个基本的GUI与Python 3.4和PySide
- 我使用QFileSystemWatcher监视特定文件
- 当文件QFileSystemWatcher调用一个方法,该方法依次调用一个PySide类中的方法
- 除了在PySide类方法中详细描述的GUI特定的操作没有被执行之外,上述所有内容看起来都很完美(I下面会更详细地解释)。
示例代码:
#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中的'Button',它将正确执行Run(),并正确执行所有'stuff'。
我的问题:有什么我在这里失踪?如果它正确地调用方法,并且能够执行各种'打印'命令,为什么它不执行实际的'东西'?
谢谢!
编辑1:我已经删除了-do stuff-标签并放入了一些示例代码。所有的'东西'代码涉及更新各种PySide QLabels,QTreeWidgets等。
编辑2:我忘记了()在treeWidget清除命令的末尾。
如果它正在打印1,2和3但没有做任何东西,那么你需要显示东西是什么东西。这很可能是他们应该责备的。 – 101 2014-12-03 23:06:21
这很公平,但如果他们不工作,肯定会引发错误?至少,它会停止执行,从而阻止它打印下面的'打印'?所有'stuff'命令都与清除QTreeWidgets,填充QLabels等有关。 – jars121 2014-12-03 23:16:17
它完全依赖于该代码。代码可以很容易地不需要你想要的,而不会引发异常! – 101 2014-12-03 23:17:23