在用PyQt进行GUI编程时,一般先通过Qt Designer产生后缀为.ui的UI文件(类似于XML文件),接着将.ui文件转换成.py文件,再通过一个python主程序调用这个.py文件,实现界面按钮与动作的关联。
将.ui转换为.py一般是通过命令行,如果电脑上安装了Eric 6,也可以用Eric转换,但最通用的还是命令行方法。其语法为
但是,当有大量ui文件时,最好能用一个脚本进行处理,省时省力还不容易出错,用老司机的话这就叫DRY原则(Don't repeat yourself)。
程序代码如下:
通过命令 查看文件夹里有哪些文件。
运行前,文件夹里有四个文件,如下。
运行完毕后,文件夹里每个.ui文件都出现了一个.py文件,如下所示。
这个程序用到了python非常强大的列表表达式(list comprehension)功能。要注意四点:
最好在path字符串前加上r或R。 表示赋给path变量的是字符串的字面值(String literals),即看见什么就表示什么,比如反斜杠 只是反斜杠而已,不会起转义作用(众所周知,python里反斜杠是个转义字符,比如 表示换行,行尾 表示续行);
最好用 的方式连接路径和文件名。不要用+号连接,因为需要额外提供反斜杠才行,比如 ,或 ,其实后一种方式会报错,提示行尾(EOL)不能出现反斜杠,尽管已经用了 ,然并卵。深入的原因不知道,难道是python程序的一个不合理之处?所以,就用join吧!更加pythonic。
判断一个文件的后缀时,尽量用 语法,不要用 。前一种方式更简洁更pythonic。
对于简单的循环,尽量使用列表表达式,更快速,用 循环的话语法冗长而且效率低下。如果数据量很大,考虑用生成器(generator),这样一来数据就不会一下子全堆进内存。只要把列表表达式的方括号换成圆括号即可,比如 。但是在程序代码里当我用生成器时,只产生了 ,问题有待查明。
领取专属 10元无门槛券
私享最新 技术干货