【问题标题】:Can't exit PyQt application on 3.7.4 and Spyder无法在 3.7.4 和 Spyder 上退出 PyQt 应用程序
【发布时间】: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


【解决方案1】:

将图形后端保持为非“内联”会产生此问题。

要么将图形后端更改为,

Tools -> Preferences --> IPython Console -> Graphics --> Graphics Backend as Inline

或者恢复 Spyder 环境的默认设置。可以通过以下方式完成,

Tools -> Preference --> Reset to Defaults.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多