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


Posted in Python onFebruary 27, 2019

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 执行字符串表达式函数(eval exec execfile)
Aug 11 Python
Zookeeper接口kazoo实例解析
Jan 22 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
Apr 11 Python
利用Python yagmail三行代码实现发送邮件
May 11 Python
python-opencv颜色提取分割方法
Dec 08 Python
Django框架封装外部函数示例
May 28 Python
Python画图实现同一结点多个柱状图的示例
Jul 07 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
Jul 26 Python
如何基于python实现归一化处理
Jan 20 Python
Python Pandas pandas.read_sql_query函数实例用法分析
Jun 21 Python
分享Python异步爬取知乎热榜
Apr 12 Python
Python利用字典破解WIFI密码的方法
Feb 27 #Python
pyside+pyqt实现鼠标右键菜单功能
Dec 08 #Python
基于PyQt4和PySide实现输入对话框效果
Feb 27 #Python
python使用PyQt5的简单方法
Feb 27 #Python
Python创建字典的八种方式
Feb 27 #Python
基于wxPython的GUI实现输入对话框(2)
Feb 27 #Python
基于wxPython的GUI实现输入对话框(1)
Feb 27 #Python
You might like
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
htm调用JS代码
2007/03/15 Javascript
javascript css float属性的特殊写法
2008/11/13 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
详解Node中导入模块require和import的区别
2017/08/11 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
2020/03/09 Javascript
基于VUE实现判断设备是PC还是移动端
2020/07/03 Javascript
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
Python做简单的字符串匹配详解
2017/03/21 Python
Python学习入门之区块链详解
2017/07/25 Python
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
django 外键model的互相读取方法
2018/12/15 Python
Python目录和文件处理总结详解
2019/09/02 Python
Python读取YAML文件过程详解
2019/12/30 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
用Python制作音乐海报
2021/01/26 Python
利用简洁的图片预加载组件提升html5移动页面的用户体验
2016/03/11 HTML / CSS
体育教育毕业生自荐信
2013/11/21 职场文书
函授毕业生的自我鉴定
2013/11/26 职场文书
低碳环保倡议书
2014/04/14 职场文书
《鲁班和橹板》教学反思
2014/04/27 职场文书
三问三解心得体会
2014/09/05 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
初中政治教师教学反思
2016/02/23 职场文书
2019年描写人生经典诗句大全
2019/07/08 职场文书
python元组打包和解包过程详解
2021/08/02 Python
Java 超详细讲解数据结构中的堆的应用
2022/04/02 Java/Android