1. 程式人生 > >pyqt下.ui檔案轉換為對應.py檔案的知識整理

pyqt下.ui檔案轉換為對應.py檔案的知識整理

    大家都知道,在通過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的選擇,但是轉換前請保證對應版本已經安裝好。