【转】PyQt4 精彩实例分析 实例 10 在程序中使用 Ui
本实例使用一个简单的例子说明如何在程序开发中使用 Designer 生成.ui 文件。本实例利用 Qt Designer
生成了 3 个简单的 ui,

在使用时,两个 ui 插入到主程序的 QTabWidget 中,另一个 ui 由按钮触发弹出,如
下图所示。



主程序窗口 TestDialog 采用的是手动编写代码的实现方式。
下面是本实例的代码实现。
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 from PyQt4.QtGui import * 5 from PyQt4.QtCore import * 6 import ui_10_1,ui_10_2,ui_10_3 7 import sys 8 9 class TestDialog(QDialog): 10 def __init__(self,parent=None): 11 super(TestDialog, self).__init__(parent) 12 13 self.firstUi = ui_10_1.Ui_Dialog() 14 self.secondUi = ui_10_2.Ui_Dialog() 15 self.thirdUi = ui_10_3.Ui_Dialog() 16 17 tabWidget = QTabWidget(self) 18 w1 = QWidget() 19 self.firstUi.setupUi(w1) 20 w2 = QWidget() 21 self.secondUi.setupUi(w2) 22 23 tabWidget.addTab(w1, "First") 24 tabWidget.addTab(w2, "Second") 25 tabWidget.resize(380,380) 26 27 self.ConnectSignalSlot() 28 29 def ConnectSignalSlot(self): 30 self.connect(self.firstUi.pushButton, SIGNAL("clicked()"), self.slotChild) 31 self.connect(self.secondUi.pushButton, SIGNAL("clicked()"), self, SLOT("reject()")) 32 33 def slotChild(self): 34 dlg = QDialog() 35 self.thirdUi.setupUi(dlg) 36 dlg.exec_() 37 38 def main(): 39 app = QApplication(sys.argv) 40 dialog = TestDialog() 41 dialog.show() 42 app.exec_() 43 44 if __name__ == '__main__': 45 main()
import ui_10_1,ui_10_2,ui_10_3 这三个文件是通过 pyuic4 工具根据相应的 ui 文件生成的。
slotChild()槽函数用于响应弹出子窗口的按钮事件。
主程序中声明了 3 个变量,firstUi,secondUi,thirdUi 分别对应 3 个 ui。
第 17 行首先创建一个 QTabWidget 对象。
第 18,19 行创建第一个 ui,首先新建一个 QWidget 对象,以此 QWidget 对象为参数调用第一个 ui 的
setupUi()函数,生成第一个 ui 页面。
第 20,21 行以同样的方式创建第二个 ui 画面。
第 23-24 行在 QTabWidget 对象中插入两个准备好的 ui 页面。
第 30 行连接第一个 ui 页面上的 childPushButton 的 clicked()信号与 slotChild()槽函数。
第 31 行连接第二个 ui 页面上 closePushButton 的 clicked()信号与 reject()槽函数,关闭主窗口程
序。
实现弹出对话框的槽函数 slotChild()中,首先新建一个 QDialog 对象,以此 QDialog 对象为参数调用第
三个 ui 对象的 setupUi()函数,最后调用 exec()显示此对话框。

浙公网安备 33010602011771号