毕设日记(二):将pyqt5的.ui文件批处理转换成.py文件

在学习了pyqt5之后,如何将.ui文件转换成.py文件就成了一个问题。
第一种方法:命令行转换
使用命令行的方法,打开cmd,切换到对应的命令下,输入

pyuic5 -o 目标名称2.py 目标名称1.ui

但是这种方式有两个不好的地方,一是每次转换的时候,必须切换到对应的目录下,比较繁琐。二是对于批处理操作不太方便。
鉴于以上问题,所以第二种方法就应运而生了。
第二种方法:通过python脚本把.ui文件转换为.py文件
完整代码如下:

import os
import os.path


class Transfer:
    """
    @author:syd
    @time:2020/2/10
    @content:将指定的.ui文件转换为.py文件
    """
    def __init__(self):
        # UI 文件所在的路径
        self.Dir = './'
        # 文件存放列表
        self.list = []

        self.listUIFile()

    def listUIFile(self):
        """
        @content:列出目录下的所有UI文件,并存放到list列表中
        """
        files = os.listdir(self.Dir)
        for filename in files:
            # print(dir + os.sep + f)
            # print(filename)
            if os.path.splitext(filename)[1] == '.ui':
                self.list.append(filename)

    @staticmethod
    def transPyFile(filename):
        """
        @content:把扩展名为.ui的文件改成扩展名为.py的文件
        """
        return os.path.splitext(filename)[0] + '.py'

    def printUI(self):
        """
        @content:展示该目录下所有.ui文件的名称及序号
        """
        id = range(1, len(self.list) + 1, 1)
        zipped = zip(id, self.list)
        for id, uifile in zipped:
            print(str(id) + ': ' + uifile)

    def excuteAll(self):
        """
        content:将.ui文件全部转换为.py文件
        """
        try:
            for uifile in self.list:
                pyfile = self.transPyFile(uifile)
                cmd = 'pyuic5 -o {pyfile} {uifile}'.format(pyfile=pyfile, uifile=uifile)
                print(cmd)
                os.system(cmd)
            print("全部文件转换成功")
        except Exception as ex:
            print("转换过程中出现错误,出错原因:" + str(ex))

    def excuteSingle(self, id):
        """
        @content: 将单个.ui文件转换为.py文件
        """
        if id < 1 or id > len(self.list):
            print("找不到" + str(id) + "号文件")
            return -1
        try:
            uifile = self.list[id - 1]
            pyfile = self.transPyFile(uifile)
            cmd = 'pyuic5 -o {pyfile} {uifile}'.format(pyfile=pyfile, uifile=uifile)
            print(cmd)
            os.system(cmd)
            return 1
        except Exception as ex:
            print(ex)

    def runMain(self):
        """
        @content:调用系统命令把UI文件转换为python文件
        """
        str = input("请输入要转换的文件序号:")
        str = str.strip()
        if str == "全部":
            self.excuteAll()
        else:
            try:
                id = str.split(' ')
                flag = 1
                for i in id:
                    if self.excuteSingle(int(i)) == -1:
                        flag = -1
                if flag == 1:
                    print("单个文件执行成功")
            except Exception as ex:
                print("处理单个文件时出现错误,错误原因:" + str(ex))


if __name__ == "__main__":
    """
    @tips:如果想要将全部的.ui转换为.py文件,输入"全部"即可;
            如果想要将其中的某几个.ui文件转换为.py文件,依次输入对应文件名称前边的序号,
            并且每两个序号中间以一个空格分割即可。示例:1 2 3 4
    """
    transfer = Transfer()
    transfer.printUI()
    transfer.runMain()

发布了52 篇原创文章 · 获赞 36 · 访问量 4508

猜你喜欢

转载自blog.csdn.net/qq_38861587/article/details/104246990