使用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_())

相關文章
相關標籤/搜索