使用Qt设计师设计的.ui界面文件是XML文件,有3种方式在PyQt中使用,本文将通过实例进行讲解。

使用PyQt中如何结合Qt设计师进行开发中的例子。点击按钮修改标签的内容。

1. 直接使用ui文件

PyQt4的ui模块提供了加载.ui文件的功能,ui.uic.loadUi(uifile[, baseinstance=None])方法会返回一个QWdiget子类的实例。

优点:不用手工转换.ui文件,直接使用。
缺点:效率低,多一个在运行中的转换过程;.ui文件暴露在外,不利于发布。
代码如下(widget1.py):

# -*- coding: utf-8 -*-
from PyQt4 import QtGui, uic

class Widget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = uic.loadUi('widget.ui')
self.ui.show()

self.ui.pbHello.clicked.connect(self.sayHello)

def sayHello(self):
self.ui.lHello.setText("Hello PyQt4")

if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
widget = Widget()
sys.exit(app.exec_())
2. 转换后加载使用

先用pyuic4命令转让成.py文件,再通过setupUi()调用。和方法1类似,多了个转换过程。

优点:界面加载速度快,方便打包发布。
缺点:调用界面中的对象需要通过self.ui,代码写的比较麻烦;每次修改.ui文件后都需要转换。
先转换:

$ pyuic4 -o ui_widget.py widget.ui
代码如下(widget2.py):

# -*- coding: utf-8 -*-
from PyQt4 import QtGui
from ui_widget import Ui_Form

class Widget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_Form()
self.ui.setupUi(self)

self.ui.pbHello.clicked.connect(self.sayHello)

def sayHello(self):
self.ui.lHello.setText("Hello PyQt4")

if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
widget = Widget()
widget.show()
sys.exit(app.exec_())
3. 转换后通过多重继承使用

和方法2类似,但是写类的时候用多重继承的方式。

优点:代码写的跟简单;可以通过self.objectName方式引用界面对象;可以使用Decorator方式绑定信号和槽。
缺点:每次修改.ui文件后都需要转换。
代码如下(widget3.py):

# -*- coding: utf-8 -*-
from PyQt4 import QtGui, QtCore
from ui_widget import Ui_Form

class Widget(QtGui.QWidget, Ui_Form):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setupUi(self)

@QtCore.pyqtSignature("")
def on_pbHello_clicked(self):
self.lHello.setText('Hello PyQt4')

if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
widget = Widget()
widget.show()
sys.exit(app.exec_())

转载于:https://www.cnblogs.com/jsben/p/4909909.html

使用Qt设计师文件的3种方式相关推荐

  1. Qt读写文件(2种方式)实现详解

    文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处 理而开发的,所以文件读写是应用程序开发的一个基本功能. 文本文件是指以纯文本格式存储的文件,例如用 Qt Creato ...

  2. 查看binlog文件的2种方式

    2019独角兽企业重金招聘Python工程师标准>>> 查看binlog文件的2种方式 1.使用show binlog events a.获取binlog文件列表 mysql> ...

  3. JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

  4. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  5. java oom dump_JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

  6. java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...

  7. java aio复制文件_java复制文件的4种方式及拷贝文件到另一个目录下的实例代码...

    尽管Java提供了一个可以处理文件的IO操作类. 但是没有一个复制文件的方法. 复制文件是一个重要的操作,当你的程序必须处理很多文件相关的时候. 然而有几种方法可以进行Java文件复制操作,下面列举出 ...

  8. 创建和应用Java包文件的两种方式(转)

    创建和应用Java包文件的两种方式(转) <Java编程艺术>章节选登.作者:高永强 清华大学出版社 (即将出版) 12.1  包--package    ... 12.1.1  包命名规 ...

  9. Java下载文件的几种方式

    public HttpServletResponse download(String path, HttpServletResponse response) {try {// path是指欲下载的文件 ...

最新文章

  1. 返还网 PK 返利网*2
  2. TZOJ 1321 Girls and Boys(匈牙利最大独立集)
  3. 产品经理十八章:产品创新能力(二)
  4. v7000更换电池步骤_ups电源运行中是否可以更换电池?应如何操作呢
  5. 【ES6(2015)】Symbol
  6. java生产者消费者模型到精通_java生产者消费者模型
  7. EMNLP 2020 | RecAdam: 在更少的遗忘下精调预训练语言模型
  8. IFrame与window对象(contentWindow)
  9. Kali Linux下社工密码字典生成工具Cupp教程
  10. 串行通信协议 CAN 和 LIN
  11. python列表替换_Python 列表元素替换
  12. [渝粤教育] 中原科技学院 设计学和美好生活 参考 资料
  13. 如何查看linux是grub还lilo,在Linux中常用的启动引导工具:grub和lilo
  14. 小程序地图,回到当前所在位置
  15. 服务器端解压rar文件多次失败问题解决
  16. C语言-学生成绩链表处理
  17. lucas定理及扩展lucas定理
  18. jmeter中控制器的使用
  19. 小说文学行业之“盛大文学”
  20. 君子博学而日参省乎己,则知明而行无过矣

热门文章

  1. python脚本绘图_python实现画图工具
  2. 红外倒车雷达原理图_自动驾驶汽车传感器技术解析—毫米波雷达
  3. ina3221嵌入式linux,嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之文件系统
  4. 2019 ACM/ICPC 南京站 E.Observation,区间筛
  5. 分解cad图纸的蜂鸟工具_知道这些CAD统计技巧,让你计算事半功倍!
  6. hadoop连接远程mysql_Hadoop之Hive本地与远程MySQL数据库管理模式安装手册
  7. 8086架构/流水线及其优化
  8. 数据库期末复习知识点:(仅供参考)
  9. python两列相乘_python – Pandas group by和sum两列
  10. centos php mcrypt_面试经常问你什么是PHP垃圾回收机制?