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  __getattr__与__setattr__使用方法
Sep 06 Python
python的Template使用指南
Sep 11 Python
Python中用于去除空格的三个函数的使用小结
Apr 07 Python
Python functools模块学习总结
May 09 Python
python实现自动登录人人网并采集信息的方法
Jun 28 Python
Python 数据结构之队列的实现
Jan 22 Python
Tensorflow 查看变量的值方法
Jun 14 Python
DRF框架API版本管理实现方法解析
Aug 21 Python
基于Python制作一副扑克牌过程详解
Oct 19 Python
python中编写函数并调用的知识点总结
Jan 13 Python
python学习之panda数据分析核心支持库
May 07 Python
python获取字符串中的email
Mar 31 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
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
2016/10/13 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
bootstrapValidator表单验证插件学习
2016/12/30 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
Python计算回文数的方法
2015/03/11 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
python简单操作excle的方法
2018/09/12 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
HTML5画渐变背景图片并自动下载实现步骤
2013/11/18 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
智乐游戏测试笔试题
2014/05/21 面试题
服装销售人员求职自我评价
2013/09/26 职场文书
车间操作工岗位职责
2013/12/19 职场文书
跑出一片天观后感
2015/06/08 职场文书
百万英镑观后感
2015/06/09 职场文书
详解Python如何批量采集京东商品数据流程
2022/01/22 Python
win10清理dns缓存
2022/04/19 数码科技
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS