【转】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()显示此对话框。

posted @ 2014-11-17 17:17  jakey.chen  阅读(688)  评论(0)    收藏  举报