PyQt clicked.connect自动连接

时间:2014-10-27 18:44:54

标签: python pyqt

我目前正在为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:

因为我遇到了关于同一主题的新问题,我已经开了一个新问题以获得更多输入。

1 个答案:

答案 0 :(得分:2)

我认为我看到了这个问题。

self.button.clicked.connect(Model().openFile())

应该是

self.button.clicked.connect(Model().openFile)

在第一个实例中,您正在调用openFile方法并将返回值传递给“connect”。在第二个中,您将方法本身传递给“连接”。