我意识到这是一个模糊的问题,但我不确定如何使其更具体。
我的代码的骨架如下:
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class FormWidget(QWidget):
def __init__(self, parent):
super(FormWidget, self).__init__(parent)
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
form = FormWidget(self)
self.setCentralWidget(form)
[do a bunch of stuff with form]
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
在FormWidget类中,有一个用于捕获键盘输入的keyPressEvent()方法,并且在特定键('q')上调用它:
mainWindow.close()
大多数情况下,这会导致应用程序根据需要退出。但偶尔(没有我可以看到的可预测模式),它会导致崩溃(对话框出现'python.exe已停止工作',并带有'关闭程序'按钮)。
我想,第一个问题是:这不是终止PyQt GUI应用程序的正确方法吗?
如果是,那么第二个问题是:据推测,我的代码在某处行为不端。但我不确定要寻找什么样的不当行为。我能做出什么样的错误会导致这种情况?
任何想法都赞赏。
/约翰