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 json模块使用实例
Apr 11 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
Jan 15 Python
Python匿名函数及应用示例
Apr 09 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
Jan 06 Python
Python 实现递归法解决迷宫问题的示例代码
Jan 12 Python
Windows上安装tensorflow  详细教程(图文详解)
Feb 04 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
Mar 10 Python
深入浅析Python 命令行模块 Click
Mar 11 Python
Python 实现使用空值进行赋值 None
Mar 12 Python
Python字符串及文本模式方法详解
Sep 10 Python
python3中编码获取网页的实例方法
Nov 16 Python
CocosCreator ScrollView优化系列之分帧加载
Apr 14 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
PHP 接入支付宝即时到账功能
2016/09/18 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
jquery自定义函数的多种方法
2014/01/09 Javascript
javascript实现表格排序 编辑 拖拽 缩放
2015/01/02 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
python处理cookie详解
2014/02/07 Python
详解python中的hashlib模块的使用
2019/04/22 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
详解python 中in 的 用法
2019/12/12 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
护理专业推荐信
2013/11/07 职场文书
大学毕业生自荐书怎么写?
2014/01/06 职场文书
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
英语专业职业生涯规划范文
2014/03/05 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
2015年基层党组织公开承诺书
2015/01/21 职场文书
学校捐书倡议书
2015/04/27 职场文书
安全温馨提示语大全
2015/07/14 职场文书
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang