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生成随机mac地址的方法
Mar 16 Python
使用Python装饰器在Django框架下去除冗余代码的教程
Apr 16 Python
浅析Python多线程下的变量问题
Apr 28 Python
Python中super的用法实例
May 28 Python
详解Python的Lambda函数与排序
Oct 25 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
Feb 10 Python
在Python中分别打印列表中的每一个元素方法
Nov 07 Python
详解用Python实现自动化监控远程服务器
May 18 Python
对python中UDP,socket的使用详解
Aug 22 Python
利用python实现AR教程
Nov 20 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 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入门速成教程
2007/03/19 PHP
PHP 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
用Node编写RESTful API接口的示例代码
2018/07/04 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
python中有帮助函数吗
2020/06/19 Python
从python读取sql的实例方法
2020/07/21 Python
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
Html5新增标签有哪些
2017/04/13 HTML / CSS
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
宿舍打麻将检讨书
2014/01/24 职场文书
销售人员求职信
2014/07/22 职场文书
2014年统计工作总结
2014/11/21 职场文书
社区党支部承诺书
2015/04/29 职场文书
优秀员工演讲稿
2019/06/21 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
PHP获取学生成绩的方法
2021/11/17 PHP