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的subprocess模块总结
Nov 07 Python
Python matplotlib绘图可视化知识点整理(小结)
Mar 16 Python
关于Python的一些学习总结
May 25 Python
python实现windows壁纸定期更换功能
Jan 21 Python
python的pstuil模块使用方法总结
Jul 26 Python
django filter过滤器实现显示某个类型指定字段不同值方式
Jul 16 Python
Python random模块的使用示例
Oct 10 Python
Python实现粒子群算法的示例
Feb 14 Python
pycharm部署django项目到云服务器的详细流程
Jun 29 Python
OpenCV图像变换之傅里叶变换的一些应用
Jul 26 Python
Python中非常使用的6种基本变量的操作与技巧
Mar 22 Python
Python PIL按比例裁剪图片
May 11 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
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
php 删除记录实现代码
2009/03/12 PHP
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
php使用PDO方法详解
2014/12/27 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
Yii实现简单分页的方法
2016/04/29 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
PHP+jQuery实现双击修改table表格功能示例
2019/02/21 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
Javascript事件实例详解
2013/11/06 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
对比分析json及XML
2014/11/28 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
python实现桌面气泡提示功能
2019/07/29 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
英国现代绅士品牌:Hackett
2017/12/17 全球购物
如何用JQuery进行表单验证
2013/05/29 面试题
求职简历推荐信范文
2013/12/02 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
优质护理服务心得体会
2016/01/22 职场文书
初中生物教学反思
2016/02/20 职场文书
四年级语文教学反思
2016/03/03 职场文书