PySide和PyQt加载ui文件的两种方法
程序员文章站
2023-11-30 11:26:10
本文实例为大家分享了pyside和pyqt加载ui文件的具体实现代码,供大家参考,具体内容如下
在用pyside或pyqt的时候,经常用到要将画好的ui文件导入到代码里使...
本文实例为大家分享了pyside和pyqt加载ui文件的具体实现代码,供大家参考,具体内容如下
在用pyside或pyqt的时候,经常用到要将画好的ui文件导入到代码里使用,下面是两种调入的方法:
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就可以调用.ui文件了,而且这两种调用方法的性能和占用的内存都有人专门测试过,但作者也比较推荐第一种方法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: vue 使用vue-i18n做全局中英文切换的方法
下一篇: php获取字段名示例分享