|
小弟刚学wxpython一个多月,结合工作需要,我写了一个小系统,管理库房的贵重物料,比如家里的CPU,内存等等(特别贵,没见过钱。。)。现在基本可以运行,废话不说,马上交货。求大家给出宝贵意见。(可以先看效果图噢)
Mainwindow.py:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
import time
import sys
import wx
import MainMenu
from Scanwindow import Scandata
from Findwindow import finddata
import socket
__author__= "Panda Zhang"
__date__ = "$Jul 20, 2016 10:05:00 AM$"
COLOR_DARKGRAY = '#AAAAAA'
COLOR_ABORT = '#CD853F'
COLOR_PINK = '#FFC0CB'
class Mainwindow(wx.Frame):
def __init__(self,):
#wx.Frame.__init__(self,None,-1,'Rotation System',pos=(100,100))
wx.Frame.__init__(self,None,-1,'Rotation System',size=(1070,900),pos=(100,100))
self.SetIcon(wx.Icon('rotation.png',wx.BITMAP_TYPE_PNG))
self.mainmenu=MainMenu.MainMenu(wx.MenuBar)
self.SetMenuBar(self.mainmenu)
self.boxv=wx.BoxSizer(wx.VERTICAL)
self.bkg=wx.Panel(self)
#self.bkg.SetBackgroundColour(COLOR_ABORT)
self.word=wx.StaticText(self.bkg,-1,label='Rotation Control System')
font = wx.Font(24,wx.DEFAULT,style=wx.ITALIC,weight=wx.BOLD )
self.word.SetFont(font)
self.scandata=Scandata(self.bkg)
self.finddata=finddata(self.bkg)
self.boxv.Add(self.word,proportion=0,flag=wx.ALIGN_CENTER|wx.LEFT|wx.RIGHT|wx.TOP|wx.BOTTOM,border=10)
self.boxv.Add(self.scandata,proportion=1,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP,border=10)
self.boxv.Add(self.finddata,proportion=1,flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP,border=10)
self.statusbar=self.CreateStatusBar()
self.statusbar.SetFieldsCount(3)
self.statusbar.SetStatusWidths([-3,-2,-1])
self.statusbar.SetStatusText(u"作者:Panda Zhang",2)
self.bkg.SetSizerAndFit(self.boxv)
if __name__ == '__main__':
app= wx.App()
mainWindow = Mainwindow()
mainWindow.Show()
app.MainLoop()
MysqlConnection.py:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
import time
import sys
import wx
from Uut import Uut
from Uut import Uut
import MySQLdb
CPUrotationtime=30
DIMMrotationtime=30
QLogicrotationtime=30
# class scandata:
# def __init__(self,sernum='',dimmsn1='',dimmsn2='',dimmsn3='',dimmsn4='',
# dimmsn5='',dimmsn6='',dimmsn7='',dimmsn8='',dimmsn9='',dimmsn10='',dimmsn11='',
# dimmsn12='',dimmsn13='',dimmsn14='',dimmsn15='',dimmsn16='',
# rectime=''):
# self.sernum = sernum
# self.dimmsn1 = dimmsn1
# self.dimmsn2 = dimmsn2
# self.dimmsn3 = dimmsn3
# self.dimmsn4 = dimmsn4
# self.dimmsn5 = dimmsn5
# self.dimmsn6 = dimmsn6
# self.dimmsn7 = dimmsn7
# self.dimmsn8 = dimmsn8
# self.dimmsn9 = dimmsn9
# self.dimmsn10 = dimmsn10
# self.dimmsn11 = dimmsn11
# self.dimmsn12 = dimmsn12
# self.dimmsn13 = dimmsn13
# self.dimmsn14 = dimmsn14
# self.dimmsn15 = dimmsn15
# self.dimmsn16 = dimmsn16
# self.rectime = rectime
#
# def getSernum(self):
# return self.sernum
# class faildata:
# def __init__(self,sernum='',dimmsn1='',dimmsn2='',dimmsn3='',dimmsn4='',
# dimmsn5='',dimmsn6='',dimmsn7='',dimmsn8='',dimmsn9='',dimmsn10='',dimmsn11='',
# dimmsn12='',dimmsn13='',dimmsn14='',dimmsn15='',dimmsn16='',
# testresult='',failitem=''):
# self.failitem = failitem
# self.count = 1
# self.sernum = [sernum]
# self.dimmsernum = [dimmsn1,dimmsn2,dimmsn3,dimmsn4,dimmsn5,
# dimmsn6,dimmsn7,dimmsn8,dimmsn9,dimmsn10,
# dimmsn11,dimmsn12,dimmsn13,dimmsn14,dimmsn15,dimmsn16]
class MysqlConnection:
def __init__(self,host,usr,pwd,db='test',port=3306):
self.host=host
self.usr=usr
self.pwd=pwd
self.db=db
self.port=port
self.conn = None
self.isConnected = False
self.cursor = None
self.uut = Uut()
def connect(self):
self.conn = MySQLdb.connect(host=self.host,port=self.port,user=self.usr,passwd=self.pwd,db=self.db)
if self.conn != None:
self.cursor = self.conn.cursor()
self.creatDb()
self.isConnected = True
#print self.isConnected
else:
self.isConnected = False
def setWarning(self,bool):
if bool:
self.cursor.execute("SET sql_notes = 0")
else:
self.cursor.execute("SET sql_notes = 1")
def creatDb(self):
self.setWarning(True)
self.cursor.execute("CREATE TABLE IF NOT EXISTS rotate (\
id INT PRIMARY KEY AUTO_INCREMENT,\
sernum VARCHAR(25),\
cpu1 VARCHAR (25),\
cpu2 VARCHAR (25),\
dimmsn1 VARCHAR(25),\
dimmsn2 VARCHAR(25),\
dimmsn3 VARCHAR(25),\
dimmsn4 VARCHAR(25),\
dimmsn5 VARCHAR(25),\
dimmsn6 VARCHAR(25),\
dimmsn7 VARCHAR(25),\
dimmsn8 VARCHAR(25),\
dimmsn9 VARCHAR(25),\
dimmsn10 VARCHAR(25),\
dimmsn11 VARCHAR(25),\
dimmsn12 VARCHAR(25),\
dimmsn13 VARCHAR(25),\
dimmsn14 VARCHAR(25),\
dimmsn15 VARCHAR(25),\
dimmsn16 VARCHAR(25),\
QLogic1 VARCHAR (25),\
QLogic2 VARCHAR (25),\
QLogic3 VARCHAR (25),\
QLogic4 VARCHAR (25),\
rectime DATETIME)")
self.setWarning(False)
self.conn.commit()
def executeCmd(self,cmd):
if not self.isConnected:
return False
self.cursor.execute(cmd)
self.conn.commit()
return True
def RecordRotate(self,sernum):
if not self.isConnected:
return False
#print sernum
# self.databasetime=str(time.strftime('%Y/%m/%d %H:%M:%S',time.localtime(time.time())))
self.executeCmd("INSERT INTO rotate (sernum,cpu1,cpu2,dimmsn1,dimmsn2,dimmsn3,dimmsn4,dimmsn5,dimmsn6,dimmsn7,dimmsn8,dimmsn9,dimmsn10,\
dimmsn11,dimmsn12,dimmsn13,dimmsn14,dimmsn15,dimmsn16,QLogic1,QLogic2,QLogic3,QLogic4,rectime) VALUES \
('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',NOW())" %(
sernum[0],
sernum[1],
sernum[2],
sernum[3],
sernum[4],
sernum[5],
sernum[6],
sernum[7],
sernum[8],
sernum[9],
sernum[10],
sernum[11],
sernum[12],
sernum[13],
sernum[14],
sernum[15],
sernum[16],
sernum[17],
sernum[18],
sernum[19],
sernum[20],
sernum[21],
sernum[22]))
# self.executeCmd("INSERT INTO rotate sernum,dimmsn1 VALUES '%s','%s'" % (sernum[0],sernum[1]))
def checkrotationrecord(self):
return True
def RotateFind(self,sernum):
if not self.isConnected:
return False
count1 = self.cursor.execute("SELECT sernum,rectime from rotate where '%s' in (cpu1,cpu2,dimmsn1,dimmsn2,dimmsn3,dimmsn4,dimmsn5,\
dimmsn6,dimmsn7,dimmsn8,dimmsn9,dimmsn10,dimmsn11,dimmsn12,dimmsn13,dimmsn14,dimmsn15,dimmsn16,QLogic1,QLogic2,QLogic3,QLogic4);"%(sernum[0]))
if count1 > 0:
results = self.cursor.fetchmany(count1)
for r in results:
self.uut.recordlist.append('%s\t %s\t %s\t'%(sernum[0],str(r[0]),str(r[1])))
self.uut.rectimelist.append(str(r[1]))
# self.uut.binddimmlist.append(sernum[0])
# self.uut.parentsn.append(str(r[0]))
# self.uut.rectimelist.append(str(r[1]))
self.uut.setrotatecount(count1)
count2 = self.cursor.execute("SELECT TIMESTAMPDIFF (DAY,'%s','%s');"%(self.uut.rectimelist[0],self.uut.rectimelist[count1-1]))
self.uut.setrotateday(count2)
self.uut.setrecordlist(self.uut.recordlist)
def close(self):
if self.conn != None:
self.cursor.close()
self.conn.close()
self.cursor = None
self.conn = None
self.isConnected = False
MainMenu.py:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
import time
import sys
import wx
import re
class MainMenu(wx.MenuBar):
def __init__(self,parentFrame,style=0):
self.style=style
self.parentFrame=parentFrame
#self.password=''
wx.MenuBar.__init__(self)
file = wx.Menu()
file.Append(110,'&Open','Open a file') #Step1
self.Append(file,'&文件') # Step2
edit=wx.Menu()
edit.Append(111,'&Cut','Cut stuff')
self.Append(edit,'&編輯')
tool=wx.Menu()
config = wx.MenuItem(tool,501,'&Settings\tCtrl+S','Settings')
self.Bind(wx.EVT_MENU,self.Password,config)
tool.AppendItem(config)
self.Append(tool, '&工站')
help=wx.Menu()
help1=help.Append(113,'&系統info','Help Me')
self.Bind(wx.EVT_MENU,self.Rule,help1)
self.Append(help,'&系統')
#wx.EVT_MENU(self, 501, self.onSettings)
#def onSettings(self,event):
#pass
def Rule(self, event):
wx.MessageBox("1.CPU recycle 20 times.\n2.DIMM recycle 30 times.\n3.Qligic recycle 20 times.")
def Password(self,event):
p3=re.compile(u'F[0-9]{7}')
while True:
dlg = wx.TextEntryDialog(self,'请输入密码:','账号登陆')
if dlg.ShowModal()==wx.ID_OK:
self.password = dlg.GetValue().upper()
if p3.match(self.password) is None:
self.password = 'Cancel'
continue
else:
dlg.Destroy()
break
else:
self.password = 'Cancel'
dlg.Destroy()
break
return self.password
Findwindow.py:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
import time
import sys
import wx
import MySQLdb
from MysqlConnection import MysqlConnection
from Uut import Uut
COLOR_DARKGRAY = '#AAAAAA'
COLOR_ABORT = '#CD853F'
COLOR_PINK = '#FFC0CB'
COLOR_AAA ='#EAEAAD'
typelist=['主板SN','內存條SN']
Loop=True
class finddata(wx.Window):
def __init__(self,parent,):
wx.Window.__init__(self,parent)
self.bkg=wx.Panel(self,style=wx.SIMPLE_BORDER)
self.datalist=[]
self.OP_ID=''
self.uut = Uut()#kobe
self.uut.setsernum('')#kobe
self.mc = MysqlConnection('localhost','admin','admin')#kobe
self.bkg.SetBackgroundColour(COLOR_AAA)
self.datainput=wx.StaticText(self.bkg,-1,label='查詢SN:',style=wx.ALIGN_CENTER)
self.datascan=wx.TextCtrl(self.bkg,style=wx.TE_PROCESS_ENTER,size = (150,25))
self.datascan.SetOwnBackgroundColour('Green')
self.datascan.Bind(wx.EVT_KEY_DOWN, self.onKeyDown)
#self.Bind(wx.EVT_TEXT,self.getscaninfo,self.datascan)
self.boxh1=wx.BoxSizer()
self.boxv3=wx.BoxSizer(wx.VERTICAL)
self.boxh1.Add(self.datainput,proportion=0,flag=wx.ALIGN_LEFT|wx.ALL,border=5)
self.boxh1.Add(self.datascan,proportion=0,flag=wx.ALIGN_LEFT|wx.ALL,border=5)
self.boxv3.AddSpacer(20)
self.boxv3.Add(self.boxh1,proportion=0,flag=wx.ALIGN_LEFT|wx.ALL,border=5)
self.boxv2=wx.BoxSizer(wx.VERTICAL)
self.findtitle=wx.StaticText(self.bkg,-1,label='查詢記錄:',style=wx.ALIGN_CENTER)
self.findtext=wx.TextCtrl(self.bkg,style=wx.TE_MULTILINE|wx.TE_READONLY,size = (780,190))
self.bkg.SetBackgroundColour(COLOR_AAA)
self.findtext.SetBackgroundColour(COLOR_DARKGRAY)
self.boxv2.Add(self.findtitle,proportion=0,flag=wx.ALIGN_LEFT,border=5)
self.boxv2.Add(self.findtext,proportion=1,flag=wx.ALIGN_LEFT|wx.ALL,border=5)
self.boxh=wx.BoxSizer()
self.boxh.Add(self.boxv3,proportion=0,flag=wx.ALIGN_LEFT,border=5)
self.boxh.Add(self.boxv2,proportion=1,flag=wx.EXPAND|wx.ALL,border=5)
self.bkg.SetSizerAndFit(self.boxh)
def onstart(self,evt):
pass
def setmessagedata(self,label):
if '\n\r' in label:
self.findtext.AppendText(label)
else:
self.findtext.AppendText(label+'\n')
def onKeyDown(self,event):
self.currenttime=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
kc=event.GetKeyCode()
if (kc==13 or kc == 370):
# print self.datascan.GetValue()
self.datalist.append(self.datascan.GetValue())
if self.datalist != []:
# print self.datalist
#liststr='[' + self.currenttime + ']' + self.datascan.GetValue()
self.mc.connect()#kobe
self.mc.RotateFind(self.datalist)#kobe
# liststr = '[' + self.currenttime + '] ' + self.datascan.GetValue() + '����ϸ��Ϣ��'
self.setmessagedata(label='======================================================================')
liststr = '[' + self.datascan.GetValue() + ']' + 'Rotate Record:'
self.setmessagedata(label=liststr)
liststr = '物料SN\t'.center(24) + '主板SN\t'.center(30) + '绑定时间\t'.center(10)
self.setmessagedata(label=liststr)
if len(self.mc.uut.recordlist) != 0:
self.setmessagedata(label='-----------------------------------------------------------------------------------')
for i in range (self.mc.uut.getrotatecount()):
liststr = self.mc.uut.getrecordlist()[i]
self.setmessagedata(label=liststr)
self.setmessagedata(label='--------------------------------------')
liststr = 'Rotate次数:\t%d\t次'%self.mc.uut.getrotatecount() + '\n' + 'Roate天数:\t%d\t天'%self.mc.uut.getrotateday() + '(%s ~ %s)'%(self.mc.uut.rectimelist[0],self.mc.uut.rectimelist[self.mc.uut.getrotatecount()-1])
self.setmessagedata(label=liststr)
self.setmessagedata(label='======================================================================')
else:
self.setmessagedata(label='-----------------------------------------------------------------------------------')
liststr = '无绑定记录'.center(100)
# self.findtext.SetDefaultStyle(wx.TextAttr('RED'))
self.setmessagedata(label=liststr)
self.setmessagedata(label='======================================================================')
self.mc.uut.recordlist=[]
self.datalist=[]
self.datascan.Clear()
event.Skip()
def getSN(self):
print self.datascan.GetValue()
def RecordSN(self):
pass
Scanwindow.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
import time
import sys
import wx
from MysqlConnection import MysqlConnection
from Uut import Uut
import re
import wx.combo
COLOR_DARKGRAY = '#AAAAAA'
COLOR_ABORT = '#CD853F'
COLOR_PINK = '#FFC0CB'
COLOR_AAA ='#EAEAAD'
typelist=['主板SN','CPU SN','內存條SN','QLogic網卡SN']
Loop=True
class Scandata(wx.Window):
def __init__(self,parent,):
wx.Window.__init__(self,parent)
self.bkg=wx.Panel(self,style=wx.SIMPLE_BORDER)
self.datalist=[]
self.OP_ID=''
self.uut = Uut()#kobe
self.uut.setsernum('')#kobe
self.samplelist=['PSU','NVRAM','MB']
self.mc = MysqlConnection('localhost','admin','admin')#kobe
self.bkg.SetBackgroundColour(COLOR_AAA)
self.materialtype=wx.StaticText(self.bkg,-1,label='物料類型:',style=wx.ALIGN_CENTER)
self.materialdata=wx.TextCtrl(self.bkg,-1,style=wx.TE_READONLY,size = (150,25))
self.materialdata.SetBackgroundColour(COLOR_DARKGRAY)
self.materialdata.Disable()
self.datainput=wx.StaticText(self.bkg,-1,label='數據掃描:',style=wx.ALIGN_CENTER)
self.datascan=wx.TextCtrl(self.bkg,style=wx.TE_PROCESS_ENTER,size = (150,25))
self.datascan.SetOwnBackgroundColour(COLOR_DARKGRAY)
self.datascan.Bind(wx.EVT_KEY_DOWN, self.onKeyDown)
self.datascan.Disable()
#self.Bind(wx.EVT_TEXT,self.getscaninfo,self.datascan)
self.startbutton=wx.Button(self.bkg,-1,label='開始',size=(85, 30))
self.stopbutton=wx.Button(self.bkg,-1,label='停止ֹ',size=(85,30))
self.Bind(wx.EVT_BUTTON,self.onstart,self.startbutton)
self.Bind(wx.EVT_BUTTON,self.onstop,self.stopbutton)
#self.stopbutton.SetBackgroundColour(COLOR_DARKGRAY)
self.stopbutton.Disable()
self.tesample=wx.StaticText(self.bkg,-1,label='TE Sample:',style=wx.ALIGN_CENTER)
self.tesampleselect =wx.Choice(self.bkg,-1,size=(85,30),choices=self.samplelist)
self.tesampleselect.SetStringSelection(self.samplelist[0])
self.sampleinput=wx.StaticText(self.bkg,-1,label='資料錄入:',style=wx.ALIGN_CENTER)
self.samplescan=wx.TextCtrl(self.bkg,style=wx.TE_PROCESS_ENTER,size = (150,25))
self.samplescan.SetOwnBackgroundColour('Green')
self.samplescan.Bind(wx.EVT_KEY_DOWN, self.samplescankeydown)
self.boxh1=wx.BoxSizer()
self.boxh1.Add(self.materialtype,proportion=0,flag=wx.ALIGN_LEFT|wx.LEFT|wx.RIGHT|wx.TOP,border=5)
self.boxh1.Add(self.materialdata,proportion=0,flag=wx.ALIGN_LEFT|wx.LEFT|wx.RIGHT|wx.TOP,border=5)
self.boxh2=wx.BoxSizer()
self.boxh2.Add(self.datainput,proportion=0,flag=wx.ALIGN_LEFT|wx.LEFT|wx.RIGHT,border=5)
self.boxh2.Add(self.datascan,proportion=0,flag=wx.ALIGN_LEFT|wx.LEFT|wx.RIGHT,border=5)
self.boxh3=wx.BoxSizer()
self.boxh3.Add(self.startbutton,proportion=0,flag=wx.ALIGN_CENTER,border=5)
self.boxh3.Add(self.stopbutton,proportion=0,flag=wx.ALIGN_CENTER,border=5)
self.boxh4=wx.BoxSizer()
self.boxh4.Add(self.tesample,proportion=0,flag=wx.ALIGN_LEFT|wx.LEFT|wx.RIGHT|wx.TOP,border=5)
self.boxh4.Add(self.tesampleselect,proportion=0,flag=wx.ALIGN_LEFT|wx.LEFT|wx.RIGHT|wx.TOP,border=5)
self.boxh5=wx.BoxSizer()
self.boxh5.Add(self.sampleinput,proportion=0,flag=wx.ALIGN_LEFT|wx.LEFT|wx.RIGHT,border=5)
self.boxh5.Add(self.samplescan,proportion=0,flag=wx.ALIGN_LEFT|wx.LEFT|wx.RIGHT,border=5)
self.boxv1=wx.BoxSizer(wx.VERTICAL)
self.boxv1.AddSpacer(10)
self.boxv1.Add(self.boxh1,proportion=0,flag=wx.ALIGN_LEFT|wx.ALL,border=5)
self.boxv1.Add(self.boxh2,proportion=0,flag=wx.ALIGN_LEFT|wx.ALL,border=5)
self.boxv1.Add(self.boxh3,proportion=0,flag=wx.ALIGN_CENTER|wx.ALL,border=5)
self.boxv1.AddSpacer(30)
self.boxv1.Add(self.boxh4,proportion=0,flag=wx.ALIGN_LEFT|wx.ALL,border=5)
self.boxv1.Add(self.boxh5,proportion=0,flag=wx.ALIGN_LEFT|wx.ALL,border=5)
self.boxv2=wx.BoxSizer(wx.VERTICAL)
self.messagetitle=wx.StaticText(self.bkg,-1,label='掃描記錄:',style=wx.ALIGN_CENTER)
self.messagetext=wx.TextCtrl(self.bkg,style=wx.TE_MULTILINE|wx.TE_READONLY,size = (780,230))
self.bkg.SetBackgroundColour(COLOR_AAA)
self.messagetext.SetBackgroundColour(COLOR_DARKGRAY)
self.boxv2.Add(self.messagetitle,proportion=0,flag=wx.ALIGN_LEFT,border=5)
self.boxv2.Add(self.messagetext,proportion=1,flag=wx.EXPAND|wx.ALL,border=5)
self.boxh=wx.BoxSizer()
self.boxh.Add(self.boxv1,proportion=0,flag=wx.ALIGN_LEFT,border=5)
self.boxh.Add(self.boxv2,proportion=1,flag=wx.EXPAND|wx.ALL,border=5)
self.bkg.SetSizerAndFit(self.boxh)
def onstart(self,evt):
self.scanID()
print '11'
if self.OP_ID != 'Cancel':
self.materialdata.Enable()
font = wx.Font(15,wx.DEFAULT,style=wx.NORMAL,weight=wx.NORMAL)
self.materialdata.SetOwnBackgroundColour('Green')
self.materialdata.SetFont(font)
self.datascan.Enable()
self.datascan.SetBackgroundColour('Green')
if len(self.datalist)==0:
self.setmaterialdata(label=typelist[0])
#self.startbutton.SetBackgroundColour(COLOR_DARKGRAY)
self.startbutton.Disable()
self.stopbutton.Enable()
def onstop(self,evt):
self.materialdata.SetOwnBackgroundColour(COLOR_DARKGRAY)
self.materialdata.Clear()
self.materialdata.Disable()
self.datascan.SetBackgroundColour(COLOR_DARKGRAY)
self.datascan.Disable()
self.datalist=[]
self.datascan.Clear()
self.startbutton.Enable()
self.stopbutton.Disable()
def scanID(self):
p3=re.compile(u'F[0-9]{7}')
#self.SetBackgroundColour('yellow')
while True:
dlg = wx.TextEntryDialog(self,'掃描您的工號:','工號錄入')
if dlg.ShowModal()==wx.ID_OK:
self.OP_ID = dlg.GetValue().upper()
if p3.match(self.OP_ID) is None:
self.OP_ID = 'Cancel'
continue
else:
self.messagetext.AppendText('歡迎' + '[' + str(self.OP_ID) + ']' + '登陸Rotation系統'+'\n')
dlg.Destroy()
break
else:
self.OP_ID = 'Cancel'
dlg.Destroy()
#sys.exit()
break
return self.OP_ID
def setmaterialdata(self,label):
self.materialdatavalue=label
#self.materialdata.AppendText(label)
self.materialdata.SetValue(label)
def getmaterialdata(self):
return self.materialdatavalue
def setmessagedata(self,label):
if '\n\r' in label:
self.messagetext.AppendText(label)
else:
self.messagetext.AppendText(label+'\n')
def getscaninfo(self,evt):
pass
# self.setmaterialtype(typelist[0])
# if self.materialdatavalue==typelist[0] and len(self.datascan.GetValue())== 13 and self.datascan.GetValue()[0:6]=='PPPCFL':
# print self.datascan.GetValue()
# datalist.append(self.datascan.GetValue)
# print datalist
# self.setmaterialtype(typelist[1])
# if self.materialdatavalue==typelist[1] and len(self.datascan.GetValue())==8 and self.datascan.GetValue()[0:3]=='123':
# print self.datascan.GetValue()
# datalist.append(self.datascan.GetValue)
# print datalist
#
def setinsertflag(self,flag=True):
self.insertflag=flag
def onKeyDown(self,event):
p1 = re.compile(u'PPCFL[A-Z0-9]{8}')
p2 = re.compile(u'SY[A-Z0-9]{2}')
p3 = re.compile(u'CPU[A-Z0-9]{6}')
p4 = re.compile(u'R[A-Z0-9]{7}')
self.insertflag=True
self.currenttime=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
kc=event.GetKeyCode()
if (kc==13 or kc == 370):
#typelist=['主板SN','CPU SN','內存條SN','QLogic網卡SN']
self.datascan.SetBackgroundColour('Green')
datascaninfo = self.datascan.GetValue().upper()
if ((p1.match(datascaninfo) is None or len(datascaninfo) != 13) and self.getmaterialdata()==typelist[0]) or\
((p2.match(datascaninfo) is None or len(datascaninfo) != 4) and "內存條" in self.getmaterialdata()) or\
((p3.match(datascaninfo) is None or len(datascaninfo) != 9) and "CPU" in self.getmaterialdata()) or\
((p4.match(datascaninfo) is None or len(datascaninfo) != 8) and "QLogic" in self.getmaterialdata()):
self.datascan.SetBackgroundColour('Red')
liststr= '[' + str(datascaninfo)+ ']' + '不是正確的格式,請重新輸入'
self.messagetext.SetDefaultStyle(wx.TextAttr('RED'))
self.setmessagedata(label=liststr)
self.messagetext.SetDefaultStyle(wx.TextAttr('BLACK'))
self.setinsertflag(flag=False)
if self.insertflag == True:
if self.datascan.GetValue() not in self.datalist:
self.datalist.append(self.datascan.GetValue().upper())
liststr='[' + self.OP_ID + ']' + '[' + self.currenttime + ']' + '[' + self.materialdata.GetValue() + ']'+ ':' + '['+ self.datascan.GetValue()+ ']'\
+ '--->' + '[' + self.datalist[0] + ']'
self.setmessagedata(label=liststr)
if self.mc.checkrotationrecord() or self.getmaterialdata()==typelist[0]:
if len(self.datalist)>=1 and len(self.datalist)<3:
self.setmaterialdata(label=typelist[1]+ str(len(self.datalist)))
if len(self.datalist)>=3 and len(self.datalist)<19:
self.setmaterialdata(label=typelist[2]+str(len(self.datalist)-2))
if len(self.datalist)>=19 and len(self.datalist)<23:
self.setmaterialdata(label=typelist[3]+str(len(self.datalist)-19))
if len(self.datalist)==23:
self.datascan.Clear()
self.mc.connect()#kobe
self.mc.RecordRotate(self.datalist)#kobe
self.setmaterialdata(label=typelist[0])
self.datalist=[]
self.messagetext.SetDefaultStyle(wx.TextAttr('Green'))
self.messagetext.AppendText('此板綁定已完成,請換一下片板。'+'\n')
self.messagetext.AppendText('-----------------------------------------------------------------'+'\n')
self.messagetext.SetDefaultStyle(wx.TextAttr('BLACK'))
else:
self.datascan.SetBackgroundColour('Red')
liststr= '[' + str(datascaninfo)+ ']' + '此SN到達使用限制,請更換新物料'
self.messagetext.SetDefaultStyle(wx.TextAttr('RED'))
self.setmessagedata(label=liststr)
self.messagetext.SetDefaultStyle(wx.TextAttr('BLACK'))
else:
self.datascan.SetBackgroundColour('Red')
liststr= '[' + str(datascaninfo)+ ']' + '此SN重复,請重新輸入'
self.messagetext.SetDefaultStyle(wx.TextAttr('RED'))
self.setmessagedata(label=liststr)
self.messagetext.SetDefaultStyle(wx.TextAttr('BLACK'))
self.datascan.Clear()
event.Skip()
def getSN(self):
print self.datascan.GetValue()
def RecordSN(self):
pass
def samplescankeydown(self,event):
pass
Uut.py:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import os
import time
import sys
import wx
class Uut(object):
def __init__(self):
self.sernum = ''
self.rectime = ''
self.dimmsnlist = ''
self.failitem = ''
self.recordlist = []
self.parentsn = []
self.rectimelist = []
self.rotateday = 0
self.rotatecount = 0
def setsernum(self,value):
self.sernum = value
def getsernum(self):
return self.sernum
def setdimmsnlist(self,value):
self.dimmsnlist = value
def getdimmsnlist(self,value):
return self.dimmsnlist
def setrectime(self,value):
self.rectime = value
def getrectime(self):
return self.rectime
def setrecordlist(self,value):
self.recordlist = value
def getrecordlist(self):
return self.recordlist
def setrectimelist(self,value):
self.rectimelist = value
def getrectimelist(self):
return self.rectimelist
def setrotateday(self,value):
self.rotateday = value
def getrotateday(self):
return self.rotateday
def setrotatecount(self,value):
self.rotatecount = value
def getrotatecount(self):
return self.rotatecount
|
-
快来点我啊
|