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实现探测socket和web服务示例
Mar 28 Python
Python实现的二维码生成小软件
Jul 11 Python
python以环状形式组合排列图片并输出的方法
Mar 17 Python
分享Python文本生成二维码实例
Jan 06 Python
flask中使用蓝图将路由分开写在不同文件实例解析
Jan 19 Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
基于Python的PIL库学习详解
May 10 Python
python实现在线翻译功能
Mar 03 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
Mar 23 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
Python基础之数据结构详解
Apr 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
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
详解Vue中watch的高级用法
2018/05/02 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
python实现定制交互式命令行的方法
2014/07/03 Python
使用Python的判断语句模拟三目运算
2015/04/24 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
python中调试或排错的五种方法示例
2019/09/12 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
python文件排序的方法总结
2020/09/13 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
CSS3 画基本图形,圆形、椭圆形、三角形等
2016/09/20 HTML / CSS
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
高三自我鉴定怎么写
2013/10/19 职场文书
计算机专业个人简短的自我评价
2013/10/23 职场文书
护理个人求职信范文
2014/01/08 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
vue3语法糖内的defineProps及defineEmits
2022/04/14 Vue.js