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魔术方法详解
Feb 14 Python
详解Python2.x中对Unicode编码的使用
Apr 03 Python
Python制作简单的网页爬虫
Nov 22 Python
Python数据类型详解(三)元祖:tuple
May 08 Python
浅析Python中else语句块的使用技巧
Jun 16 Python
python 队列详解及实例代码
Oct 18 Python
轻松掌握python设计模式之访问者模式
Nov 18 Python
对Python使用mfcc的两种方式详解
Jan 09 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
Feb 08 Python
Python的高阶函数用法实例分析
Apr 11 Python
Python数据类型之String字符串实例详解
May 08 Python
keras 自定义loss层+接受输入实例
Jun 28 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
中国第一家无线电行
2021/03/01 无线电
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
javascript 伪数组实现方法
2010/10/11 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
React组件生命周期详解
2017/07/03 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
vue+elementUI实现表格关键字筛选高亮
2020/10/26 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
利用Python破解斗地主残局详解
2017/06/30 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
Python实现在Windows平台修改文件属性
2020/03/05 Python
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
房地产销售经理岗位职责
2014/01/01 职场文书
项目考察欢迎辞
2014/01/17 职场文书
留学推荐信怎么写
2014/01/25 职场文书
面试后感谢信怎么写
2014/02/01 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python