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 IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
Feb 13 Python
一些Centos Python 生产环境的部署命令(推荐)
May 07 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
浅谈python 导入模块和解决文件句柄找不到问题
Dec 15 Python
使用python读取.text文件特定行的数据方法
Jan 28 Python
python实现日志按天分割
Jul 22 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
python实现知乎高颜值图片爬取
Aug 12 Python
Python 元组操作总结
Sep 18 Python
Python多线程通信queue队列用法实例分析
Mar 24 Python
Python中常见的数制转换有哪些
May 27 Python
在pycharm中创建django项目的示例代码
May 28 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
用来给图片加水印的PHP类
2008/04/09 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
Prototype 学习 Prototype对象
2009/07/12 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
python快速建立超简单的web服务器的实现方法
2018/02/17 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
素质拓展感言
2014/01/29 职场文书
通用自荐信范文
2014/03/14 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
解决Golang中goroutine执行速度的问题
2021/05/02 Golang
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
Python find()、rfind()方法及作用
2022/12/24 Python