#coding:utf-8
'''ServerGui.py
设置比赛开始时间
设置比赛结束时间
若时间无误启动监听服务'''
importtimeimportreimporttkinter as tkfrom tkinter importsimpledialogfrom DenyServer import *
importthreadingclassServerGui():def __init__(self):'''开始时间,结束时间'''self.getEndTime= ''self.getStartTime= ''
'''定义窗口布局'''self.root=tk.Tk()
self.serverMark= 1self.root.title('404监考服务器')
self.curWidth= 450self.curHeight= 85scnWidth,scnHeight=self.root.maxsize()
tmpcnf= '%dx%d+%d+%d'%(self.curWidth,self.curHeight,
(scnWidth-self.curWidth)/2,(scnHeight-self.curHeight)/2)
self.root.geometry(tmpcnf)
self.root.resizable(False, False)'''比赛开始时间Button'''self.setStartTimeButton=tk.Button(self.root,
text='设置比赛开始时间:',
height=1,width=15,padx=8,pady=1,
font=("Arial",14),
command=self.setStartTime)
self.startTimeLable= tk.Label(self.root,text='00:00:00',font=("Arial",20))
self.setStartTimeButton.grid(row=0,column=0,stick=tk.E)
self.startTimeLable.grid(row=0,column=1,stick=tk.W)'''比赛结束时间Button'''self.setTimeButton=tk.Button(self.root,
text='设置比赛结束时间:',
height=1,width=15,padx=8,pady=1,
font=("Arial",14),
command=self.setEndTime)
self.timeLable= tk.Label(self.root,text='00:00:00',font=("Arial",20))
self.setTimeButton.grid(row=1,column=0,stick=tk.E)
self.timeLable.grid(row=1,column=1,stick=tk.W)'''启动服务器'''
ifself.serverMark:
self.threadStartServerServices= threading.Thread(target=self.checkTimeAndLocaltion)
self.threadStartServerServices.start()
self.root.mainloop()'''检查时间是否设置'''
defcheckTimeAndLocaltion(self):whileTrue:if self.getEndTime != '' and self.getStartTime != '':
self.serverStart()breaktime.sleep(1)'''设置比赛开始时间'''
defsetStartTime(self):
ch= simpledialog.askstring("比赛开始时间:", "时间格式例如:2017-07-12 00:00:15")
pattern=re.compile(r'(\d{4}-\d{2}-\d{2})((\s\d{2}:\d{2}:\d{2}|))')try:
s=pattern.search(ch).group()
self.getStartTime=s
self.startTimeLable.configure(text=s)exceptAttributeError:
tk.messagebox.showerror('警告', "格式错误")
self.setStartTime()exceptTypeError:pass
'''设置比赛结束时间'''
defsetEndTime(self):
ch= simpledialog.askstring("比赛结束时间:", "时间格式例如:2017-07-12 00:00:15")
pattern=re.compile(r'(\d{4}-\d{2}-\d{2})((\s\d{2}:\d{2}:\d{2}|))')try:
s=pattern.search(ch).group()
self.getEndTime=s
self.timeLable.configure(text=s)exceptAttributeError:
tk.messagebox.showerror('警告', "格式错误")
self.setEndTime()exceptTypeError:pass
'''启动服务器端'''
defserverStart(self):
self.serverMark=0'''模块接口'''server=ThreadTCPServer(initServerIp(), TCPHandler)
TCPHandler.startTime= datetime.datetime.strptime(self.getStartTime, "%Y-%m-%d %H:%M:%S")
TCPHandler.endTime= datetime.datetime.strptime(self.getEndTime, "%Y-%m-%d %H:%M:%S")
server_thread= threading.Thread(target=server.serve_forever())
server_thread.daemon=True
server_thread.start()
server_thread.join()
server.shutdown()if __name__ == '__main__':
servergui= ServerGui()