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语言编写电脑时间自动同步小工具
Mar 08 Python
python快速建立超简单的web服务器的实现方法
Feb 17 Python
Python中的TCP socket写法示例
May 11 Python
python 中文件输入输出及os模块对文件系统的操作方法
Aug 27 Python
Python爬虫设置代理IP(图文)
Dec 23 Python
Django 创建新App及其常用命令的实现方法
Aug 04 Python
Python笔记之代理模式
Nov 20 Python
python将邻接矩阵输出成图的实现
Nov 21 Python
详细分析Python collections工具库
Jul 16 Python
Pycharm调试程序技巧小结
Aug 08 Python
Python logging模块handlers用法详解
Aug 14 Python
python模拟点击在ios中实现的实例讲解
Nov 26 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
对javascript和select部件的结合运用
2006/10/09 PHP
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
网上抓的一个特效
2007/05/11 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
2020/04/13 Javascript
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
Python使用Supervisor来管理进程的方法
2015/05/28 Python
六行python代码的爱心曲线详解
2019/05/17 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
python中xlutils库用法浅析
2020/12/29 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
公司会计主管岗位责任制
2014/03/01 职场文书
婚前协议书
2014/04/15 职场文书
学习雷锋活动总结
2014/04/29 职场文书
社会工作专业求职信
2014/07/15 职场文书
承诺书样本
2014/08/30 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
幼儿园老师新年寄语2015
2014/12/08 职场文书
单位介绍信格式
2015/01/31 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
浅谈vue2的$refs在vue3组合式API中的替代方法
2021/04/18 Vue.js
HTML常用标签超详细整理
2022/03/19 HTML / CSS
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL