我使用设计师创建了表单。 所以,我有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函数不起作用。
答案 0 :(得分:0)
如果你看一下 Form.py 中的类定义,你会发现它只是一个继承自object
的简单命名空间。 setupUi
方法创建Qt Deisgner中指定的所有小部件,并使它们成为此命名空间的属性。唯一的例外是顶级窗口小部件,必须作为setupUi
参数传递给Form
。
因此,您在 FormProc.py 中创建的FormProc
课程目前完全是多余的。要使其有用,您需要将其作为顶级窗口小部件的子类,然后将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。