PyQT實現一個自動生成配置工具
阿新 • • 發佈:2019-01-29
裝置要量產,需要為每臺裝置燒錄MAC及裝置標識資訊,今天為這事情專門寫個小工具實現 這個功能,主要解決批量生成燒錄配置資訊,這裡對其過程作個總結:
1. 選擇QT的原因在於當時手上的圖形工具就這一種,不想再花時間去搭建新的環境
2. QT簡潔高效,搭配Python比較方便
3. 功能比較清晰,邏輯簡單
主要過程:
1. 使用QT DESIGNER設定好介面,最終生成一個.ui檔案的XML檔案
進而通過pyuic4命令生成一個.py檔案,該PY檔案包含了介面的實現
2. 新的main.py檔案包含功能的實現
其間主要解決了MAC的自加問題、產生隨機字元問題、MAC地址的校驗問題、QT彈訊息問題、中文顯示問題
MAC的有效性:
def isValidMacAddr(s):
valid = re.compile(r'''
(^([0-9A-F]{1,2}[-]){5}([0-9A-F]{1,2})$
|^([0-9A-F]{1,2}[:]){5}([0-9A-F]{1,2})$
|^([0-9A-F]{1,2}[.]){5}([0-9A-F]{1,2})$)
''', re.VERBOSE | re.IGNORECASE)
return valid.match(s) is not None
MAC增加 :
def increase_mac(mac, offset):#"B4B3628040aa" format return "{:012X}".format(int(mac, 16) + offset)
產生隨機字元:
def random_str(In_randStrLen):
if int(In_randStrLen) <= 0:
return None
randomlength=int(In_randStrLen)
a = list(string.ascii_letters)
random.shuffle(a)
return ''.join(a[:randomlength])
中文顯示問題:
def messageOut(self, msgContent): #type = sys.getfilesystemencoding() #print msgContent.decode('gbk') strs = msgContent.decode('gbk') QtGui.QMessageBox.question(self, 'Notice', strs, QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok) return -1
QT彈出訊息框:
def validateMembers(self):
if len(self.modeNameVal) == 0:
self.messageOut("ERROR,無效的model name!")
return -1
if len(self.baseMacVal) == 0 or True != isValidMacAddr(self.baseMacVal):
self.messageOut("ERROR,無效的基準MAC!")
return -1
if len(self.userNameVal) == 0:
self.messageOut("ERROR,無效的user name!")
return -1
#if len(self.macNum) == 0 or int(self.macNum) <= 0:
# self.messageOut("ERROR,無效的MAC數!")
# return -1
if len(self.maxMac) == 0 or True != isValidMacAddr(self.maxMac):
self.messageOut("ERROR,無效的最大MAC地址值!")
return -1
if len(self.macStep) == 0 or int(self.macStep) <= 0:
self.messageOut("ERROR,無效的MAC跳數!")
return -1
return 0
對於 上面幾段程式碼,網上都有類似參考,整個功能實現只用了不到160行程式碼,很方便。