PyQt4窗口没有正确关闭信号和插槽,只有“x”按钮

时间:2012-05-27 00:10:00

标签: window pyqt pyqt4

正如标题所示,当我创建一个按钮或用于结束程序的菜单选项时,窗口不会关闭。

所以我试图找出结束程序并同时关闭窗口。我一直在使用教程:

http://zetcode.com/tutorials/pyqt4/

这是非常好的。那么我如何连接按钮与结束&关闭小部件?

以下是我一直使用的一些示例代码(从教程中复制)。我似乎无法完全复制结尾,但我不认为这是问题:

#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
ZetCode PyQt4 tutorial 

This program creates a quit
button. When we press the button,
the application terminates. 

author: Jan Bodnar
website: zetcode.com 
last edited: October 2011
"""

import sys
from PyQt4 import QtGui, QtCore


class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):               

        qbtn = QtGui.QPushButton('Quit', self)
        qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(50, 50)       

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Quit button')    
        self.show()

def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

谢谢!

3 个答案:

答案 0 :(得分:1)

代码有效。我有同样的问题,但在IDLE之外运行它可以工作。无需更改代码即可在QtGui模块上调用quit方法。

答案 1 :(得分:0)

您的应用是QtGui.QApplication,那么为什么要使用QtCore.QCoreApplication连接到退出信号?将其更改为QtGui.QApplication.instance().quit

答案 2 :(得分:0)

qbtn.clicked.connect(QtCore.QCoreApplication.instance()。quit)替换为 的 qbtn.clicked.connect(self.close) 我也面临同样的问题(尝试从相同的zetcode教程学习Qt4)并来到这里寻找解决方案