PyQt,当按下按钮连接到不同类的方法时,代码永远不会退出\uyu init__

2024-09-28 19:28:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在为我的PyQt GUI实现一个模型-视图体系结构。下面是我的代码的一个简单但有代表性的版本。在

class Model(QtGui.QWidget):
    def __init__(self):
        super(Model, self).__init__()
        self.openDir = '/some/file/dir/'
    def openFile(self):
        openFileName = QtGui.QFileDialog.getOpenFileName(None, "Open File",self.openDir,"AllFiles(*.*)")
        openFile = open(openFileName, 'r')
        ...

class View(QtGui.QWidget):
    def__init__(self):
    super(View, self).__init__()
    ...
    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_())

所以当我点击“open”按钮时,我想调用ModelopenFile方法,但当我点击它时,它会进入Model.__init__,但实际上它从来没有进入openFile方法。我要修什么?在


编辑1:修正了所有的错误。在


编辑2:对于那些面临类似问题的人,这里是Fred S提供的解决方案和修复的代码。在

^{pr2}$

Tags: 代码selfviewmodelinitdefopenclass
1条回答
网友
1楼 · 发布于 2024-09-28 19:28:24

我的机器上没有PyQt4,但我有PySide。下面是我运行代码时看到的:

1)super(Model, self).__init__(parent)崩溃。”未定义“父项”。在

2)open = open(openFileName, 'r')非常糟糕。你在重新定义一个内置的。在

3)self.loadDir似乎不存在。在

4)至于你的问题,如果我改变

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

成为:

^{pr2}$

那么问题似乎就解决了。但这是在PySide,所以可能不是在PyQt4中。祝你好运。在

相关问题 更多 >