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备份目录及目录下的全部内容的实现方法
Jun 12 Python
python模糊图片过滤的方法
Dec 14 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
Python+PyQT5的子线程更新UI界面的实例
Jun 14 Python
python实现数据分析与建模
Jul 11 Python
关于python3中setup.py小概念解析
Aug 22 Python
Python读取实时数据流示例
Dec 02 Python
TensorFlow打印输出tensor的值
Apr 19 Python
Python yield生成器和return对比代码实例
Apr 20 Python
python 实用工具状态机transitions
Nov 21 Python
Python 数据分析之逐块读取文本的实现
Dec 14 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 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
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
2013/08/27 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
vue中使用router全局守卫实现页面拦截的示例
2020/10/23 Javascript
Vue实现Header渐隐渐现效果的实例代码
2020/11/05 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
python打开windows应用程序的实例
2019/06/28 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
keras 解决加载lstm+crf模型出错的问题
2020/06/10 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
利用python爬取有道词典的方法
2020/12/08 Python
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
捷科时代的软件测试笔试题
2015/11/09 面试题
建筑设计学生的自我评价
2014/01/16 职场文书
大学生自我鉴定书
2014/03/24 职场文书
学校文明单位申报材料
2014/05/06 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
培训督导岗位职责
2015/04/10 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书