2013-08-27 4 views
2

Я стараюсь следовать руководству this, однако он сделан для PyQt4, пока я использую PyQt5.Сделать QPushButton закрыть все открытые программные окна

У меня есть QPushButton объекта под название btn и хочет его clicked() сигнала для запуска QApplicationcloseAllWindows() слота. Я прочитал документацию, но, похоже, это не помогает, я новичок в Python.

Кто-нибудь знает, как это сделать?

ответ

0

Checkout этот пример:

#!/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_()) 
Смежные вопросы