python qwidget closeEvent 没有调用
python qwidget closeEvent doesn't call
我使用设计器创建了表单。
所以,我有 3 个文件:
1. Form.py: - 从设计器自动创建
..... bla-bla-bla ......
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(1920, 1000)
Form.setMaximumSize(QtCore.QSize(1920, 1000))
..... bla-bla-bla ......
2。 FormProc.py: - 为处理而创建的手册
from Form import *
class FormProc(Ui_Form):
def setupUi(self, Form):
Ui_Form.setupUi(self, Form)
..... bla-bla-bla ......
3。 Main.py: - 主文件
import sys
from FormProc import *
def main():
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QWidget()
mw=FormProc()
mw.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我需要捕捉 closeEvent,但我不能。在 FormProc.py 中定义 closeEvent 函数不起作用。
如果您查看 Form.py 中的 class 定义,您会发现它只是一个继承自 [=12= 的简单命名空间]. setupUi
方法创建所有在 Qt Deisgner 中指定的小部件,并使它们成为该命名空间的属性。唯一的例外是顶级小部件,它必须作为 Form
参数传递给 setupUi
。
因此,您在 FormProc.py 中创建的 FormProc
class 目前完全是多余的。要使它有用,您需要使其成为 顶级小部件 的子 class,然后向其添加 ui。有几种方法可以做到这一点。这是一种方法:
FormProc.py:
from PyQt4 import QtGui
from Form import Ui_Form
class FormProc(QtGui.QWidget):
def __init__(self, parent=None):
super(FormProc, self).__init__(parent)
self.ui = Ui_Form()
self.ui.setupUi(self)
def closeEvent(self, event):
print('close event')
Main.py:
import sys
from PyQt4 import QtGui
from FormProc import FormProc
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
MainWindow = FormProc()
MainWindow.show()
sys.exit(app.exec_())
有关其他示例,请参阅 PyQt4 文档中的 Using Qt Designer。
我使用设计器创建了表单。 所以,我有 3 个文件:
1. Form.py: - 从设计器自动创建
..... bla-bla-bla ......
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(1920, 1000)
Form.setMaximumSize(QtCore.QSize(1920, 1000))
..... bla-bla-bla ......
2。 FormProc.py: - 为处理而创建的手册
from Form import *
class FormProc(Ui_Form):
def setupUi(self, Form):
Ui_Form.setupUi(self, Form)
..... bla-bla-bla ......
3。 Main.py: - 主文件
import sys
from FormProc import *
def main():
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QWidget()
mw=FormProc()
mw.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我需要捕捉 closeEvent,但我不能。在 FormProc.py 中定义 closeEvent 函数不起作用。
如果您查看 Form.py 中的 class 定义,您会发现它只是一个继承自 [=12= 的简单命名空间]. setupUi
方法创建所有在 Qt Deisgner 中指定的小部件,并使它们成为该命名空间的属性。唯一的例外是顶级小部件,它必须作为 Form
参数传递给 setupUi
。
因此,您在 FormProc.py 中创建的 FormProc
class 目前完全是多余的。要使它有用,您需要使其成为 顶级小部件 的子 class,然后向其添加 ui。有几种方法可以做到这一点。这是一种方法:
FormProc.py:
from PyQt4 import QtGui
from Form import Ui_Form
class FormProc(QtGui.QWidget):
def __init__(self, parent=None):
super(FormProc, self).__init__(parent)
self.ui = Ui_Form()
self.ui.setupUi(self)
def closeEvent(self, event):
print('close event')
Main.py:
import sys
from PyQt4 import QtGui
from FormProc import FormProc
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
MainWindow = FormProc()
MainWindow.show()
sys.exit(app.exec_())
有关其他示例,请参阅 PyQt4 文档中的 Using Qt Designer。