本文實例為大家分享了PySide和PyQt加載ui文件的具體實現代碼,供大家參考,具體內容如下
在用PySide或PyQt的時候,經常用到要將畫好的ui文件導入到代碼里使用,下面是兩種調入的方法:
import PyQt4.uicfrom PyQt4 import QtCore, QtGuiMainWindowForm, 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.uicfrom PyQt4 import QtCore, QtGuiclass 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 QtGuiimport xml.etree.ElementTree as xmlfrom cStringIO import StringIOdef 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就可以調用.ui文件了,而且這兩種調用方法的性能和占用的內存都有人專門測試過,但作者也比較推薦第一種方法。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答