2013-09-22 2 views
0

Как видно, метод closeEvent в следующем коде вызывается нажатием x (в верхнем правом углу окна). Я угадываю информацию, которая позволяет python сделать это соединение внутри аргумента self.Выполнение функции closeEvent() за пределами класса в PySide

Есть ли способ реализовать это в процедурной или функциональной программе.

import sys 
from PySide import QtGui 

class Example(QtGui.QWidget): 

    def __init__(self): 
     super(Example, self).__init__() 

     self.initUI() 

    def initUI(self): 

     self.setGeometry(300, 300, 250, 150) 
     self.setWindowTitle('Message box') 
     self.show() 

    def closeEvent(self, event): 

     reply = QtGui.QMessageBox.question(self, 'Message', 
      "Are you sure to quit?", QtGui.QMessageBox.Yes | 
      QtGui.QMessageBox.No, QtGui.QMessageBox.No) 

     if reply == QtGui.QMessageBox.Yes: 
      event.accept() 
     else: 
      event.ignore() 


def main(): 

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


if __name__ == '__main__': 
    main() 
+0

уточните: «Есть ли способ реализовать это в процедурной или функциональной программе». – MadeOfAir

ответ

0

Видимо, вы можете назначить собственную функцию для QWidget.closeEvent функции (имущества), при условии, что вы берете автоматически передается в экземпляр аргумента и события во внимание:

def myHandler(widget_inst, event): 
    print("Handling closeEvent") 

mywidget = QWidget() 
mywidget.closeEvent = myHandler 

Это собирается получить утомительный и не способ, которым все должно было быть сделано.

Смежные вопросы