使QPushButton关闭所有打开的程序窗口

2024-10-01 15:45:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图遵循this教程,但是它是为PyQt4而设计的,而我正在使用PyQt5。在

我有一个名为btnQPushButton对象,并希望它的clicked()信号触发QApplicationcloseAllWindows()槽。我已经阅读了文档,但它似乎没有帮助,我是Python新手。在

有人知道怎么做吗?在


Tags: 对象文档信号教程thispyqt5pyqt4新手
1条回答
网友
1楼 · 发布于 2024-10-01 15:45:35

检查此示例:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

#    -
# IMPORT
#    -
import sys

from PyQt4 import QtGui, QtCore

#    -
# DEFINE
#    -
class MyWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        self.pushButtonClose = QtGui.QPushButton(self)
        self.pushButtonClose.setText("Close Windows!")
        self.pushButtonClose.clicked.connect(self.on_pushButtonClose_clicked)

        self.pushButtonWindows = QtGui.QPushButton(self)
        self.pushButtonWindows.setText("Create Windows!")
        self.pushButtonWindows.clicked.connect(self.on_pushButtonWindows_clicked)

        self.layoutVertical = QtGui.QVBoxLayout(self)
        self.layoutVertical.addWidget(self.pushButtonClose)
        self.layoutVertical.addWidget(self.pushButtonWindows)

    @QtCore.pyqtSlot()
    def on_pushButtonWindows_clicked(self):
        position = self.rect().bottom()

        for dialogNumber in range(3):
            dialog = QtGui.QDialog(self)
            dialog.show()
            dialog.setGeometry(
                position,
                position,
                dialog.width(),
                dialog.height()
            )

            position += 10

    @QtCore.pyqtSlot()
    def on_pushButtonClose_clicked(self):
        app = QtGui.QApplication.instance()
        app.closeAllWindows()

#    -
# MAIN
#    -
if __name__ == "__main__":    
    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow()
    main.setGeometry(0, 0, 333, 111)
    main.setWindowFlags(
        main.windowFlags() |
        QtCore.Qt.WindowStaysOnTopHint |
        QtCore.Qt.X11BypassWindowManagerHint
    )
    main.show()

    sys.exit(app.exec_())

相关问题 更多 >

    热门问题