【发布时间】:2019-12-22 21:10:27
【问题描述】:
在 Windows 10 64 位和 Python 3.7.4(无 Anaconda)上运行,来自Terminate PyQt Application 的基本脚本
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget
from PyQt5.QtCore import QSize
class HelloWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setMinimumSize(QSize(640, 480))
self.setWindowTitle("Hello world")
centralWidget = QWidget(self)
self.setCentralWidget(centralWidget)
gridLayout = QGridLayout(self)
centralWidget.setLayout(gridLayout)
title = QLabel("Hello World from PyQt", self)
title.setAlignment(QtCore.Qt.AlignCenter)
gridLayout.addWidget(title, 0, 0)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mainWin = HelloWindow()
mainWin.show()
sys.exit( app.exec_() )
从 Spyder 启动时不退出。 IPython 控制台只是“空闲”,但永远不会返回。从命令提示符(即'python script.py')运行脚本可以正常工作。
切换回全新安装的 Python 3.7.2,一切正常。 IPython 版本在这两种情况下都是 7.7.0。
在这两种情况下(3.7.2 和 3.7.4),包括 Spyder 在内的所有模块都已通过 pip 安装。
知道为什么吗?是与 Spyder 相关的问题吗?
【问题讨论】:
-
@mishsx 代码格式化是为了代码,请不要编辑更改版本号、操作系统/程序名称等以格式化为代码,这是不必要且不可读的
-
(这里是 Spyder 维护者) 请阅读our guide 了解如何在 Spyder 中运行 PyQt 应用程序。
-
@CarlosCordoba:如果我按照建议将 3.7.2 上的后端设置为自动,则会出现同样的问题(不退出)。选择 Inline 选项,有些东西会被遮挡,比如图标的透明度,但程序可以正常退出。
-
@CarlosCordoba:使用 3.7.4,按照您的指南确实工作。将后端设置为自动解决它。所以实际的问题似乎是为什么在 3.7.2 中将其设置为 Automatic 会产生问题。
-
抱歉,我不知道为什么那个版本会失败。
标签: python-3.x pyqt spyder