PyQt5实现点击按键退出GUI界面

阅读这篇的前提是已经默认了解了PyQt5的基础框架PyQt5创建按钮和触发点击事件(超链接点击跳转)。我们进一步介绍如何点击按键实现退出当前创建好的GUI界面。这里介绍三种方法。

方法一,代码如下:

# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.resize(600, 300)
        self.setWindowTitle('点击按键关闭当前GUI界面')

        self.button1 = QPushButton('关闭', self)
        self.button1.clicked.connect(self.clickButtonCloseWindow)

    def clickButtonCloseWindow(self):
        self.close()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())

当我们点击案件的时候,直接执行self.close()语句,因为此时的self本身指代的就是我们当前创建的QMainWindow窗口,所以直接调用close方法即可。

方法二:当然我们也可以更加简化一些,直接去掉按键点击后执行的函数,直接将按键事件与关闭界面关联起来。代码如下:

# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.resize(600, 300)
        self.setWindowTitle('点击按键关闭当前GUI界面')

        self.button1 = QPushButton('关闭', self)
        self.button1.clicked.connect(self.close)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())

可以看到我们直接将按键点击事件与self.close关联起来,注意:这里的self.close不能够加括号,否则报错

方法三:点击按键是确定当前QApplication对象的实例,并关闭,代码如下:

# -*- coding:utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.resize(600, 300)
        self.setWindowTitle('点击按键关闭当前GUI界面')

        self.button1 = QPushButton('关闭', self)
        self.button1.clicked.connect(self.clickButtonCloseWindow)

    def clickButtonCloseWindow(self):
        qApp = QApplication.instance()
        qApp.quit()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())

我们可以看到我们使用QApplication.instance()来获取当前QApplication实例化的对象,然后用quit()方法退出当前的GUI界面。

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

  • 11
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: 使用 PyQt5 嵌入另一个 exe 的 GUI 界面可以使用 QProcess 类。QProcess 类可以用来启动和控制外部进程,并且可以通过信号和槽来获取进程的输出和错误信息。 具体实现方法如下: 1. 创建一个 QProcess 对象 2. 设置要启动的 exe 程序的路径 3. 启动进程 4. 在进程启动后,使用信号和槽来获取进程的输出和错误信息 5. 使用 QProcess 对象的 finished() 信号来检测进程是否结束 详细实现步骤可以参考 PyQt5 官方文档中关于 QProcess 类的说明。 ### 回答2: 在PyQt5实现嵌入另一个exe的GUI界面可以通过使用QAxContainer模块来实现。QAxContainer模块允许我们在PyQt5应用程序中嵌入并控制外部程序。 首先,需要在Python脚本中导入所需的模块: ``` from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.QtAxContainer import QAxWidget ``` 然后,创建一个PyQt5应用程序并主窗口: ``` app = QApplication([]) window = QMainWindow() window.setGeometry(100, 100, 500, 500) # 设置窗口大小 ``` 接下来,创建一个QAxWidget对象来嵌入外部exe的GUI界面: ``` widget = QAxWidget() widget.setControl('ProgID') # 替换'ProgID'为要嵌入的外部程序的ProgID widget.setProperty('DisplayAlerts', False) # 可选的,用于控制外部程序的属性 widget.setParent(window) widget.setGeometry(0, 0, 500, 500) # 设置widget对象的位置和大小 ``` 最后,显示主窗口并执行应用程序: ``` window.show() app.exec_() ``` 在以上代码中,需要将'ProgID'替换为要嵌入的外部程序的ProgID。例如,如果要嵌入Internet Explorer,可以将'ProgID'设置为'Shell.Explorer'。 这样,就可以在PyQt5应用程序中嵌入另一个exe的GUI界面了。 ### 回答3: PyQt5是一种Python绑定的Qt框架,可以用于开发跨平台的图形用户界面GUI)应用程序。在PyQt5中,我们可以轻松地实现嵌入另一个exe程序的GUI界面实现这一功能的关键在于使用QProcess类,该类可以启动一个外部进程,并与之进行通信。下面是实现的步骤: 1. 首先,我们需要导入PyQt5库,并创建一个主应用程序。 2. 创建一个QProcess对象,并设置要启动的exe程序路径。 3. 通过调用QProcess的start方法来启动该进程。 4. 在需要嵌入GUI界面的地方,创建一个QWidget对象,并在该对象上设置布局。 5. 创建一个QWindow对象,并将其作为父对象传递给QWidget的setParent方法。 6. 调用QWidget的createWinId方法获取QWidget的窗口ID,并将其作为参数传递给QProcess的setNativeParent方法。 7. 调用QWidget的winId方法获取窗口ID,并将其作为参数传递给QProcess的start方法。 通过上述步骤,我们可以实现将另一个exe程序的GUI界面嵌入到我们的应用程序中。需要注意的是,嵌入的程序必须使用Qt库来构建其GUI界面。 通过PyQt5实现嵌入另一个exe程序的GUI界面可以有效地提高应用程序的可扩展性和复用性。我们可以将其他已有的GUI程序嵌入到我们的应用程序中,从而实现更加丰富和灵活的功能。 总而言之,使用PyQt5可以轻松地实现嵌入另一个exe程序的GUI界面。通过使用QProcess类和QWidget类的相关方法,我们可以将其他程序的GUI界面嵌入到我们的应用程序中,从而实现更加丰富和灵活的功能。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的大熊猫

你的鼓励将是我写作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值