【发布时间】:2014-08-23 07:10:27
【问题描述】:
首先,我是 PyQt 的新手。
我一直在尝试将一个函数链接到主窗口的关闭按钮(窗口角落的红色 x),但没有成功。现在,我的代码看起来像这样:
class Ui_MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.setupUi(self)
def setupUi(self, MainWindow):
#setup code goes here
def retranslateUi(self, MainWindow):
#re translation of the GUI code
def closeEvent(self, event):
print "User has clicked the red x on the main window"
在一个单独的“主”文件中,我有以下内容:
class GUIForm(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self,parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
#self.ui.ECUStatus_txt = MyWidget.__init__.text_list
self.threadData()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp = GUIForm()
myapp.show()
ret = app.exec_()
sys.exit(ret)
但是,当我通过命令提示符运行时,当我点击红色 x 时,我无法看到打印语句。我知道我是 Qt 新手,但是我看到很多人问这个问题,而且似乎没有一个答案超出上面已经写的内容。
这两个解决方案都与我的相似,但仍然不起作用
尽管答案可能适用于该用户的特定代码,但我和我的 PyQt 同事对于我们的推理不起作用仍然很模糊。 PyQt 中内置的“红色 X 框”是否有定义的按钮名称?我可以像其他按钮一样将它连接到其他功能吗?
【问题讨论】:
-
也许
aboutToQuit信号是您正在寻找的? qt-project.org/doc/qt-5/qcoreapplication.html#aboutToQuit -
可能在您的代码中您缺少到插槽的连接信号。这是 Qt 库的“主干”。
-
@user3419537 ,我试试看!
-
@NickLesnykh ,如果是这种情况,我将如何解决它?
-
@sudobangbang,在您的情况下,您可以将 aboutToQuit 信号(从 QApplication 实例发出)连接到处理程序,或 Qt 术语中的插槽。您可以在
app实例化之后添加:app.aboutToQuit.connect(on_exit)