【问题标题】:Make QPushButton close all open program windows使 QPushButton 关闭所有打开的程序窗口
【发布时间】:2013-08-29 21:27:02
【问题描述】:

我正在尝试遵循 this 教程,但是它是为 PyQt4 制作的,而我正在使用 PyQt5。

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

有人知道怎么做吗?

【问题讨论】:

    标签: python qt pyqt pyqt5


    【解决方案1】:

    查看此示例:

    #!/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_())
    

    【讨论】:

      猜你喜欢
      • 2011-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多