【问题标题】:PyQt5 Quit buttonPyQt5 退出按钮
【发布时间】:2017-10-06 13:16:22
【问题描述】:

您能否解释一下为什么在这种情况下退出按钮无法正常工作:

import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtCore import QCoreApplication


class Example(QWidget):

    def __init__(self):
        super().__init__()       
        self.initUI()


    def initUI(self):               
        qbtn = QPushButton('Quit', self)
        qbtn.clicked.connect(QCoreApplication.instance().quit)
        qbtn.move(50, 50)       
        self.setGeometry(300, 300, 250, 150)   
        self.show()


app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

但如果我在函数中包含最后三行,则可以:

def fun():
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

fun()

我不明白机制:(

【问题讨论】:

  • “无法正常工作”是什么意思?它对我来说是一样的。
  • 当我在第一种情况下单击按钮时,没有任何反应。在第二种情况下,窗口实际上是关闭的
  • 你的操作系统是什么?
  • Windows 7。对于这两种情况,我只有一个行为不同吗? :)
  • 如果我运行该代码,窗口甚至不会关闭。对于发现此问题的其他人,我快速浏览了一下,可以使用 QCoreApplication.instance().quit 而不是 self.close

标签: python pyqt pyqt5


【解决方案1】:

我在使用 linux 时遇到了同样的问题。此代码来自教程 在 zetcode.com 上的 QuitButton.py 文件中的 PyQt5。这是我发现的解决方案:

而不是使用:

qbtn.clicked.connect(QCoreApplication.instance().quit)

用这个替换它:

qbtn.clicked.connect(self.close)

在此之后,您不需要在单独的函数中调用它。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 2011-01-22
    • 1970-01-01
    • 2018-12-11
    • 2023-03-07
    • 2018-12-28
    相关资源
    最近更新 更多