我目前正在为PyQt GUI实现模型视图架构。这是我目前代码的一个更简单但有代表性的版本(因为我的代码太久了)
class Model(QtGui.QWidget):
def __init__(self):
self.openDir = '/some/file/dir/'
def openFile(self):
openFileName = QtGui.QFileDialog.getOpenFileName(None, "Open File",self.loadDir,"AllFiles(*.*)")
open = open(openFileName, 'r')
...
class View(QtGui.QWidget):
def__init__(self):
...
self.button = QtGui.QPushButton("Open")
...
self.button.clicked.connect(Model().openFile())
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
mainWindow = View()
mainWindow.show()
sys.exit(app.exec_())
然而,即使我没有按下按钮,信号也已经发出,QFileDialog窗口会自动出现。
编辑1:
因为我遇到了关于同一主题的新问题,我已经开了一个新问题以获得更多输入。
答案 0 :(得分:2)
我认为我看到了这个问题。
self.button.clicked.connect(Model().openFile())
应该是
self.button.clicked.connect(Model().openFile)
在第一个实例中,您正在调用openFile方法并将返回值传递给“connect”。在第二个中,您将方法本身传递给“连接”。