当前位置: 移动技术网 > IT编程>脚本编程>Python > PySide和PyQt加载ui文件的两种方法

PySide和PyQt加载ui文件的两种方法

2019年03月16日  | 移动技术网IT编程  | 我要评论

北京市东城区公证处,xman44,阿斯科利

本文实例为大家分享了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文件了,而且这两种调用方法的性能和占用的内存都有人专门测试过,但作者也比较推荐第一种方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网