PyQt4 精彩实例分析* 实例10 在程序中使用Ui

本实例展示了如何使用QtDesigner设计ui界面,并通过pyuic4将设计的.ui文件转换为可导入的Python代码。ui文件被插入到主程序的QTabWidget中,其中一个ui由按钮触发弹出,实现了模块化和可扩展的UI设计。
摘要由CSDN通过智能技术生成

本实例使用一个简单的例子说明如何在程序开发中使用Designer生成.ui文件。本实例利用Qt Designer生成了3个简单的ui,在使用时,两个ui插入到主程序的QTabWidget中,另一个ui由按钮触发弹出,如下图所示。主程序窗口TestDialog采用的是手动编写代码的实现方式。

                       

利用Qt Designer设计生成的.ui文件,在使用时可利用Qt自带的工具pyuic4生成ui_xxx.py文件进行使用。

下图是本实例使用Qt Designer设计的3个ui文件。

然后使用pyuic4对这三个ui文件进行转换,如下图所示。

下面是本实例的代码实现。

[python]  view plain copy
  1. from PyQt4.QtGui import *  
  2. from PyQt4.QtCore import *  
  3. import ui_10_1,ui_10_2,ui_10_3  
  4. import sys  
  5.   
  6. class TestDialog(QDialog):  
  7.     def __init__(self,parent=None):  
  8.         super(TestDialog,self).__init__(parent)  
  9.           
  10.         firstUi=ui_10_1.Ui_Dialog()  
  11.         secondUi=ui_10_2.Ui_Dialog()  
  12.         self.thirdUi=ui_10_3.Ui_Dialog()  
  13.           
  14.         tabWidget=QTabWidget(self)  
  15.         w1=QWidget()  
  16.         firstUi.setupUi(w1)  
  17.         w2=QWidget()  
  18.         secondUi.setupUi(w2)  
  19.   
  20.         tabWidget.addTab(w1,"First")  
  21.         tabWidget.addTab(w2,"Second")  
  22.         tabWidget.resize(380,380)  
  23.   
  24.         self.connect(firstUi.childPushButton,SIGNAL("clicked()"),self.slotChild)  
  25.         self.connect(secondUi.closePushButton,SIGNAL("clicked()"),self,SLOT("reject()"))  
  26.         
  27.     def slotChild(self):  
  28.         dlg=QDialog()  
  29.         self.thirdUi.setupUi(dlg)  
  30.         dlg.exec_()  
  31.           
  32. app=QApplication(sys.argv)  
  33. dialog=TestDialog()  
  34. dialog.show()  
  35. app.exec_()  

import ui_10_1,ui_10_2,ui_10_3 这三个文件是通过pyuic4工具根据相应的ui文件生成的。

slotChild()槽函数用于响应弹出子窗口的按钮事件。

主程序中声明了3个变量,firstUi,secondUi,thirdUi分别对应3个ui。

第14行首先创建一个QTabWidget对象。

第15,16行创建第一个ui,首先新建一个QWidget对象,以此QWidget对象为参数调用第一个ui的setupUi()函数,生成第一个ui页面。

第17,18行以同样的方式创建第二个ui画面。

第20-22行在QTabWidget对象中插入两个准备好的ui页面。

第24行连接第一个ui页面上的childPushButton的clicked()信号与slotChild()槽函数。

第25行连接第二个ui页面上closePushButton的clicked()信号与reject()槽函数,关闭主窗口程序。

实现弹出对话框的槽函数slotChild()中,首先新建一个QDialog对象,以此QDialog对象为参数调用第三个ui对象的setupUi()函数,最后调用exec()显示此对话框。

 

 

注:本文基本上是经过改编的《Linux窗口程序设计--Qt4精彩实例分析》一书的PyQt4 for windows版本

 转自:http://blog.csdn.net/chumpklutz/article/details/6061077

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值