使closeEvent()在PySide中的类之外工作

时间:2013-09-22 15:14:20

标签: pyside python-3.3

在单击x(在窗口的右上角)时,似乎调用以下代码中的closeEvent方法。我猜测允许python使该连接在self参数内的信息。

有没有办法将其实现为程序或功能程序。

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()

1 个答案:

答案 0 :(得分:0)

显然,您可以将自己的函数分配给QWidget.closeEvent函数(属性),前提是您将自动传入的实例参数和事件考虑在内:

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

mywidget = QWidget()
mywidget.closeEvent = myHandler

这将变得乏味,并不是事情的目的。