python - PyQt5 GUI 无法从 Spyder 关闭
问题描述
我正在尝试使用 PyQt5 创建一个简单的 GUI。我在 Spyder(Anaconda 最新版本,python 3.7)的 Windows 10 中运行我的代码。这是我的代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'PyQt5 button test'
self.left = 50
self.top = 50
self.width = 720
self.height = 800
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
button = QPushButton('PyQt5 button', self)
button.setToolTip('This is an example button')
button.move(100,70)
button.clicked.connect(self.on_click)
self.show()
@pyqtSlot()
def on_click(self):
print('PyQt5 button click')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
app.exec_()
弹出一个窗口。现在,如果我通过单击关闭按钮(GUI 的右上角)关闭 GUI,Spyder IP 控制台不会恢复正常状态。它冻结了。我应该在代码中使用什么来解决问题?
谢谢,莫尼
解决方案
关闭窗口似乎不会关闭 QApplication 对象。为此,通过在 on_Click 定义之后添加这两行来覆盖主窗口的 closeEvent 函数
def closeEvent(self,event):
QApplication.quit()
这将关闭窗口和 QApplication 对象以及控制应该返回到控制台
推荐阅读
- excel - 未找到命名参数 VBA 编译错误
- javascript - 我只想从返回的 JSON 结果中获取特定值
- c++ - 如何从一个类转换到另一个类?
- maps - 必应地图 - 无法设置自定义地图样式
- azure - Azure microsoft graph api 受邀用户无法邀请用户
- r - 如果日期是外语,如何将字符转换为日期?#丹麦语
- python - 如何中断 Python 子进程
- node.js - 使用 Puppeteer 在客户端生成 PDF
- testing - 如何设置需要在其他功能之前运行的 Cucumber 功能?
- php - 如何在 PHP 中禁止 file_get_contents() 的本地 URL?