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创建系统目录的方法
Mar 11 Python
python实现的用于搜索文件并进行内容替换的类实例
Jun 28 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
Jan 20 Python
python 将list转成字符串,中间用符号分隔的方法
Oct 23 Python
利用anaconda作为python的依赖库管理方法
Aug 13 Python
Django REST Framework之频率限制的使用
Sep 29 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
Nov 11 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
Mar 06 Python
Python实现猜年龄游戏代码实例
Mar 25 Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 Python
如何用Python徒手写线性回归
Jan 25 Python
python Protobuf定义消息类型知识点讲解
Mar 02 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中进行身份认证
2006/10/09 PHP
php结合安卓客户端实现查询交互实例
2015/05/05 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
PHP实现的日历功能示例
2018/09/01 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
微信小程序实现九宫格抽奖
2020/04/15 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
vue select 获取value和lable操作
2020/08/28 Javascript
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
python3.0 字典key排序
2008/12/24 Python
python使用smtplib模块通过gmail实现邮件发送的方法
2015/05/08 Python
python链接Oracle数据库的方法
2015/06/28 Python
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
销售员求职个人的自我评价
2014/02/19 职场文书
《锄禾》教学反思
2014/04/08 职场文书
食品工程专业求职信
2014/06/15 职场文书
超市创业计划书
2014/09/15 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
2014年医务科工作总结
2014/12/18 职场文书
对象析构函数__del__在Python中何时使用
2022/03/22 Python