您的位置:首页 > 编程语言 > Qt开发

PyQT实现一个自动生成配置工具

2016-09-06 19:47 351 查看
设备要量产,需要为每台设备烧录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行代码,很方便。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: