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中assert用法实例分析
Apr 30 Python
Python3编程实现获取阿里云ECS实例及监控的方法
Aug 18 Python
python下实现二叉堆以及堆排序的示例
Sep 29 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
python引入不同文件夹下的自定义模块方法
Oct 27 Python
PyCharm 设置SciView工具窗口的方法
Jan 15 Python
python使用Qt界面以及逻辑实现方法
Jul 10 Python
对Django外键关系的描述
Jul 26 Python
查看已安装tensorflow版本的方法示例
Apr 19 Python
在pycharm中关掉ipython console/PyDev操作
Jun 09 Python
python实现图书馆抢座(自动预约)功能的示例代码
Sep 29 Python
Python selenium模拟网页点击爬虫交管12123违章数据
May 26 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中的内存管理问题
2011/08/31 PHP
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
变量在 PHP7 内部的实现(一)
2015/12/21 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
Python base64编码解码实例
2015/06/21 Python
在Django中同时使用多个配置文件的方法
2015/07/22 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
2018/05/24 Python
python内存管理机制原理详解
2019/08/12 Python
JACK & JONES英国官方网站:欧洲领先的男装生产商
2017/09/27 全球购物
管理学专业个人求职信范文
2013/12/13 职场文书
小学生优秀评语大全
2014/04/22 职场文书
园艺师求职信
2014/04/27 职场文书
大学生入党自荐书
2015/03/05 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
巴黎圣母院观后感
2015/06/10 职场文书
mysql查询结果实现多列拼接查询
2022/04/03 MySQL