使用Qt设计师文件的3种方式
使用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_())
使用Qt设计师文件的3种方式的更多相关文章
- C#中的Excel操作【1】——设置Excel单元格的内容,打开Excel文件的一种方式
前言 作为项目管理大队中的一员,在公司里面接触最多的就是Excel文件了,所以一开始就想从Excel入手,学习简单的二次开发,开始自己的编程之路! 程序界面 功能说明 打开文件按钮,可以由使用者指定要 ...
- 前端js,css文件合并三种方式,bat命令
前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...
- android中解析文件的三种方式
android中解析文件的三种方式 好久没有动手写点东西了,最近在研究android的相关技术,现在就android中解析文件的三种方式做以下总结.其主要有:SAX(Simple API fo ...
- java读取XML文件的四种方式
java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...
- Android开发之合并文件的几种方式
以下介绍合并文件的几种方式,并通过合并amr文件来举例介绍合并文件的详细流程.amr格式的文件头是6字节,所以在进行文件合并的时候要减去除第一个文件以外的其它文件的文件头. 注意:不同文件的文件头是不 ...
- 加载xib文件的两种方式
一.加载xib文件的两种方式 1.方法一(NewsCell是xib文件的名称) NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@&quo ...
- js 图片base64转file文件的两种方式
js 图片base64转file文件的两种方式 https://blog.csdn.net/yin13037173186/article/details/83302628 //将base64转换为bl ...
- 转 Velocity中加载vm文件的三种方式
Velocity中加载vm文件的三种方式 velocitypropertiespath Velocity中加载vm文件的三种方式: 方式一:加载classpath目录下的vm文件 Prope ...
- SpringMVC加载配置Properties文件的几种方式
最近开发的项目使用了SpringMVC的框架,用下来感觉SpringMVC的代码实现的非常优雅,功能也非常强大, 网上介绍Controller参数绑定.URL映射的文章都很多了,写这篇博客主要总结一下 ...
随机推荐
- mysql 多重游标嵌套
1.DECLARE CONTINUE HANDLER FOR NOT FOUND 在mysql的存储过程中经常会看到这句话:DECLARE CONTINUE HANDLER FOR NOT FOUND ...
- python自定义排序函数
Python内置的 sorted()函数可对list进行排序: >>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36] 但 sorted() ...
- LintCode-三数之和
题目描述: 给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组. 注意事项 在三元组(a, b, c),要求a <= b <= c ...
- 安装 Rational Rose 启动报错:无法启动此程序,因为计算机中丢失 suite objects.dll
安装完以后提示找不到 suite objects.dll: 经查找,该 dll 存在: 找不到的原因是,安装程序自动设置在 Path 中的环境变量有误: 把最后的 common 改成 Common: ...
- 从51跳新唐cortex学习3——细说新唐两种定时器
的定时器我们已经是相当熟悉啦.但是,对于第一次接触新唐,第一次接触cortex的定时器一样,都是加1计数,但是功能和容量变大了),包括4个32位定时器(里面放24位的数据),还有分频功能.TMER0到 ...
- TCP/IP笔记 三.运输层(3)——TCP超时重传算法
TCP 每发送一个报文段,就对这个报文段设置一次计时器.只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段 1. 平均往返时延RTT 往返时延:一个报文段发出的时间,以及收到相应的确认报文 ...
- swift3.0 hello swift(1)
一直对swift感兴趣,在前段时间的新闻中,大多是swift3.0发布和xcode8.0的改进,因为改动比较大,以前使用swift2.x做项目的人,都在担心其项目从2.x迁移到3.0+的问题.以前简单 ...
- Winter(bfs&&dfs)
1084 - Winter PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Winter is ...
- Python之美[从菜鸟到高手]--一步一步动手给Python写扩展(异常处理和引用计数)
我们将继续一步一步动手给Python写扩展,通过上一篇我们学习了如何写扩展,本篇将介绍一些高级话题,如异常,引用计数问题等.强烈建议先看上一篇,Python之美[从菜鸟到高手]--一步一步动手给Pyt ...
- c 判断水仙花数,质数(素数)
#include<stdio.h> #include<stdbool.h> //水仙花数--各位立方和等于本身 void sXh() { int x,y,z; printf(& ...