1. 程式人生 > >PyQT實現一個自動生成配置工具

PyQT實現一個自動生成配置工具

裝置要量產,需要為每臺裝置燒錄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行程式碼,很方便。