PySide和PyQt加載ui文件的兩種方法
更新時間:2019年02月27日 11:08:23 作者:lulongfei172006
這篇文章主要為大家詳細介紹了PySide和PyQt加載ui文件的兩種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了PySide和PyQt加載ui文件的具體實現(xiàn)代碼,供大家參考,具體內(nèi)容如下
在用PySide或PyQt的時候,經(jīng)常用到要將畫好的ui文件導入到代碼里使用,下面是兩種調(diào)入的方法:
import PyQt4.uic
from PyQt4 import QtCore, QtGui
MainWindowForm, MainWindowBase = PyQt4.uic.loadUiType('ui/mainwindow.ui')
class MainWindow(MainWindowBase, MainWindowForm):
def __init__(self, parent = None):
super(MainWindow, self).__init__(parent)
# setup the ui
self.setupUi(self)
if ( __name__ == '__main__' ):
app = None
if ( not app ):
app = QtGui.QApplication([])
window = MainWindow()
window.show()
if ( app ):
app.exec_()
第二種:
import PyQt4.uic
from PyQt4 import QtCore, QtGui
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent = None):
super(MainWindow, self).__init__(parent)
# load the ui
PyQt4.uic.loadUi('ui/mainwindow.ui', self)
if ( __name__ == '__main__' ):
app = None
if ( not app ):
app = QtGui.QApplication([])
window = MainWindow()
window.show()
if ( app ):
app.exec_()
當然如果是用PySide的話,我們可以寫個專門讀取ui文件的方法,將baseclass和formclass返回出去,供后面UI的類繼承。
# -*- coding: utf-8 -*-
from PySide import QtGui
import xml.etree.ElementTree as xml
from cStringIO import StringIO
def load_ui_file(ui_file, type='PySide'):
if type == 'PySide':
import pysideuic
print pysideuic
parsed = xml.parse(ui_file)
widget_class = parsed.find('widget').get('class')
form_class = parsed.find('class').text
with open(ui_file, 'r') as f:
o = StringIO()
frame = {}
pysideuic.compileUi(f, o, indent=0)
pyc = compile(o.getvalue(), '<string>', 'exec')
exec pyc in frame
form_class = frame['Ui_%s' % form_class]
base_class = getattr(QtGui, widget_class)
return form_class, base_class
elif type == 'PyQt4':
import PyQt4.uic
return PyQt4.uic.loadUiType(ui_file)
if __name__ == "__main__":
ui_file = 'test.ui'
load_ui_file(ui_file)
這樣Pyside和PyQt就可以調(diào)用.ui文件了,而且這兩種調(diào)用方法的性能和占用的內(nèi)存都有人專門測試過,但作者也比較推薦第一種方法。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python Paramiko實現(xiàn)SSHv2協(xié)議輕松管理遠程服務器
這篇文章主要為大家介紹了Python Paramiko實現(xiàn)SSHv2協(xié)議輕松管理遠程服務器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01

