PySide和PyQt加载ui文件的两种方法
本文实例为大家分享了PySide和PyQt加载ui文件的具体实现代码,供大家参考,具体内容如下
在用PySide或PyQt的时候,经常用到要将画好的ui文件导入到代码里使用,下面是两种调入的方法:
importPyQt4.uic
fromPyQt4importQtCore,QtGui
MainWindowForm,MainWindowBase=PyQt4.uic.loadUiType('ui/mainwindow.ui')
classMainWindow(MainWindowBase,MainWindowForm):
def__init__(self,parent=None):
super(MainWindow,self).__init__(parent)
#setuptheui
self.setupUi(self)
if(__name__=='__main__'):
app=None
if(notapp):
app=QtGui.QApplication([])
window=MainWindow()
window.show()
if(app):
app.exec_()
第二种:
importPyQt4.uic
fromPyQt4importQtCore,QtGui
classMainWindow(QtGui.QMainWindow):
def__init__(self,parent=None):
super(MainWindow,self).__init__(parent)
#loadtheui
PyQt4.uic.loadUi('ui/mainwindow.ui',self)
if(__name__=='__main__'):
app=None
if(notapp):
app=QtGui.QApplication([])
window=MainWindow()
window.show()
if(app):
app.exec_()
当然如果是用PySide的话,我们可以写个专门读取ui文件的方法,将baseclass和formclass返回出去,供后面UI的类继承。
#-*-coding:utf-8-*-
fromPySideimportQtGui
importxml.etree.ElementTreeasxml
fromcStringIOimportStringIO
defload_ui_file(ui_file,type='PySide'):
iftype=='PySide':
importpysideuic
printpysideuic
parsed=xml.parse(ui_file)
widget_class=parsed.find('widget').get('class')
form_class=parsed.find('class').text
withopen(ui_file,'r')asf:
o=StringIO()
frame={}
pysideuic.compileUi(f,o,indent=0)
pyc=compile(o.getvalue(),'','exec')
execpycinframe
form_class=frame['Ui_%s'%form_class]
base_class=getattr(QtGui,widget_class)
returnform_class,base_class
eliftype=='PyQt4':
importPyQt4.uic
returnPyQt4.uic.loadUiType(ui_file)
if__name__=="__main__":
ui_file='test.ui'
load_ui_file(ui_file)
这样Pyside和PyQt就可以调用.ui文件了,而且这两种调用方法的性能和占用的内存都有人专门测试过,但作者也比较推荐第一种方法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。