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 06 Python
python利用正则表达式排除集合中字符的功能示例
Oct 10 Python
利用Python循环(包括while&amp;for)各种打印九九乘法表的实例
Nov 06 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
Dec 03 Python
pytorch permute维度转换方法
Dec 14 Python
对python以16进制打印字节数组的方法详解
Jan 24 Python
pyhanlp安装介绍和简单应用
Feb 22 Python
使用Python中的reduce()函数求积的实例
Jun 28 Python
PyTorch中的padding(边缘填充)操作方式
Jan 03 Python
django教程如何自学
Jul 31 Python
python使用ctypes库调用DLL动态链接库
Oct 22 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
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
JQuery魔力之$(&quot;tagName&quot;)与selector
2012/03/05 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
JavaScript中length属性的使用方法
2015/06/05 Javascript
javascript实现表单验证
2016/01/29 Javascript
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
用Python写冒泡排序代码
2016/04/12 Python
Python处理文本文件中控制字符的方法
2017/02/07 Python
Python 加密的实例详解
2017/10/09 Python
python实现SOM算法
2018/02/23 Python
python中正则表达式的使用方法
2018/02/25 Python
numpy.random模块用法总结
2019/05/27 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
基于python中__add__函数的用法
2019/11/25 Python
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
咖啡蛋糕店创业计划书
2014/01/28 职场文书
技术员岗位职责
2015/02/04 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
《花钟》教学反思
2016/02/17 职场文书
Golang中channel的原理解读(推荐)
2021/10/16 Golang
python井字棋游戏实现人机对战
2022/04/28 Python