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 相关文章推荐
win10系统中安装scrapy-1.1
Jul 03 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
PyCharm代码格式调整方法
May 23 Python
python实现人民币大写转换
Jun 20 Python
Pycharm设置去除显示的波浪线方法
Oct 28 Python
python 为什么说eval要慎用
Mar 26 Python
python tkinter图形界面代码统计工具(更新)
Sep 18 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
Python3如何使用tabulate打印数据
Sep 25 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
Jan 05 Python
python编写函数注意事项总结
Mar 29 Python
实例讲解Python中sys.argv[]的用法
Jun 03 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
图形数字验证代码
2006/10/09 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
JavaScript执行环境及作用域链实例分析
2018/08/01 Javascript
vue select选择框数据变化监听方法
2018/08/24 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
2019/08/17 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
数据员岗位职责
2013/11/19 职场文书
求职面试个人自我评价
2014/02/28 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
安全生产目标责任书
2014/04/14 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
会计电算化实训报告
2014/11/04 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
小学生作文批改评语
2014/12/25 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers