使用Qt设计师文件的3种方式

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

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

1. 直接使用ui文件设计

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

优势:不用手工转换.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相似,多了个转换过程。utf-8

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

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

# -*- 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. 转换后经过多重继承使用qt

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

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

# -*- coding: utf-8 -*-from PyQt4 import QtGui, QtCorefrom 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_())

相关文章
相关标签/搜索