pyqt实现.ui文件批量转换为对应.py文件脚本


Posted in Python onJune 19, 2019

大家都知道,在通过Pyqt4的designer工具创建界面.ui文件后需要手动cmd命令将.ui文件转换为.py之后才能进行事件的编写,如果遇到一次创建很多.ui文件一个个转换会很麻烦,本着会偷懒的程序员才是好程序员的信条,博主写了一个能够自动识别给定目录下未转换的.ui文件,并将其转换为.py文件的简单脚本,直接上代码趴:

#!/usr/bin/env python
#coding=utf-8
'''
自动识别未转换的UI文件并转换为对应版本的py文件
    —— by Joy
'''
import os
 
# 此处的path为UI文件存放的路径
path = r'D:\SVNzhangy\fast-transfer\src'
 
# 记录转换成功的文件数量
count = 0
for root, dirs, files in os.walk(path):
  filename = []
  for file in files:
    if file.endswith('.py'):
      filename2 = file.split('.')[0]
      filename.append(filename2)
 
  version = input("请输入1 or 2 确认pyqt转换版本(1 - pyqt4,2 - pyqt5):")
 
  for file in files:
    if file.endswith('.ui'):
      filename1 = file.split('.')[0]
      filename4 = filename1 + "_qt4"
      filename5 = filename1 + "_qt5"
      try:
        if "1" == str(version):
          if filename.count(filename4) == 0:
            os.system('pyuic4 -o %s.py %s.ui -d'%(path + '\\' + filename4, path+'\\'+filename1))
            count+=1
        if "2" == str(version):
          if filename.count(filename5) == 0:
            os.system('pyuic5 -o %s.py %s.ui -d' % (path + '\\' + filename5, path + '\\' + filename1))
            count += 1
      except Exception as e:
        print "文件转化错误,请检查是否正确安装指令对应PyQt"
        raise e
 
  if count == 0:
    print "暂无需要转换的UI文件"
  else:
    print '转换完毕,请查收!本次共转换 ' + str(count) + ' 个文件'

祝大家敲的开心~

更新于2017/8/30

博主在编译UI文件时出现了错误,在命令后加个-d可以打印错误信息,发现是UI文件中用了中文字体的缘故,改成英文字体就ok了,记录一下,代码已修改。

同时,因为pyqt个人应用是免费的,但是用于商业用途就会收费,所以为了方便,还是推荐使用pip管理工具下载pyside库编写应用,教程百度有很多不在此赘述,用法和pyqt几乎没有什么区别,编译UI文件的命令换成pyside-uic就可以了,注意!不论是pyuic4还是pysi-uic,这两个exe文件的系统环境变量都需要设置,否则会找不到命令。

更新于2018/2/22

代码添加了转换版本pyqt5的选择,但是转换前请保证对应版本已经安装好。

以上这篇pyqt实现.ui文件批量转换为对应.py文件脚本就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python学习笔记之os模块使用总结
Nov 03 Python
python简单的函数定义和用法实例
May 07 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
Oct 12 Python
详解Python里使用正则表达式的ASCII模式
Nov 02 Python
Python快速排序算法实例分析
Nov 29 Python
Python中max函数用于二维列表的实例
Apr 03 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
Jun 19 Python
解析python的局部变量和全局变量
Aug 15 Python
详解python中GPU版本的opencv常用方法介绍
Jul 24 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 20 Python
Pycharm 设置默认解释器路径和编码格式的操作
Feb 05 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 #Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
Jun 19 #Python
python调用动态链接库的基本过程详解
Jun 19 #Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 #Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 #Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 #Python
python操作kafka实践的示例代码
Jun 19 #Python
You might like
php对图像的各种处理函数代码小结
2013/07/08 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
优化JavaScript脚本的性能的几个注意事项
2006/12/22 Javascript
cssQuery()的下载与使用方法
2007/01/12 Javascript
javascript 特殊字符串
2009/02/25 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
解决vue打包 npm run build-test突然不动了的问题
2020/11/13 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
使用Python求解最大公约数的实现方法
2015/08/20 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
Python用户自定义异常的实现
2020/12/25 Python
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
Hotels.com南非:酒店预订
2017/11/02 全球购物
幼儿教师师德师风演讲稿
2014/08/22 职场文书
2014年发展党员工作总结
2014/11/12 职场文书
亮剑观后感300字
2015/06/05 职场文书
初中班主任教育随笔
2015/08/15 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js
CSS3实现指纹特效代码
2022/03/17 HTML / CSS
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android