import tkinter as tk
from tkinter import ttk
import datetime,time
import tkinter.messagebox as tkm
windows= tk.Tk()
windows.geometry('800x600+10+10')
windows.title("张芸溪的防疫知识窗体")
day_now=datetime.date.today()
data=tk.Label(windows,font=('楷体',15),text=day_now,fg="blue")
data.place(x = 90,y = 20)
time_now=time.strftime("%H:%M:%S")
time=tk.Label(windows,font=('楷体',15),text=time_now,fg="blue")
time.place(x = 550,y = 20)
name=tk.Label(windows,text='姓名:',font=('楷体',20))
school_num=tk.Label(windows,text='学号:',font=('楷体',20))
xb=tk.Label(windows,text='性别:',font=('楷体',20))
name.place(x = 20,y = 60)
school_num.place(x = 270,y = 60)
xb.place(x = 520,y = 60)
name_enter=tk.Entry(windows,font=('楷体',20))
school_num_enter=tk.Entry(windows,font=('楷体',20))
def xbxc_h():#性别选择函数
global xb_enter
xb_enter= ttk.Combobox(windows)
xb_enter['value'] = ('男','女')
xb_enter.configure(state="readonly")
xb_enter.place(width=50, height=30,x = 590,y = 64)
name_enter.place(width=150, height=30,x = 90,y = 64)
school_num_enter.place(width=150, height=30,x = 340,y = 64)
xbxc_h()#性别选择函数
bdmc=tk.Label(windows,font=('楷体',15),text='此次新冠肺炎的正式名称:')
bdmc.place(x = 20,y = 110)
xgfy_chioce_name="MERS-CoV"#默认选择
def xgfy_name():#新冠肺炎选择结果
global xgfy_chioce_name
xgfy_chioce_name=ButtonList.get()
def xgfymc_h():#新冠肺炎名称选择
global ButtonList
ButtonList = tk.StringVar()
r1 = tk.Radiobutton(windows, variable=ButtonList, value="MERS-CoV", text="MERS-CoV",font=('楷体',15),command=xgfy_name)
r2 = tk.Radiobutton(windows, variable=ButtonList, value="2019-nCoV", text="2019-nCoV",font=('楷体',15),command=xgfy_name)
r3 = tk.Radiobutton(windows, variable=ButtonList, value="COVID-19", text="COVID-19",font=('楷体',15),command=xgfy_name)
ButtonList.set("MERS-CoV")
r1.place(x = 20,y = 140)
r2.place(x = 300,y = 140)
r3.place(x = 580,y = 140)
xgfymc_h()#新冠肺炎名称选择
bdmc=tk.Label(windows,font=('楷体',15),text='防疫专用术语--"三件套"指的是:')
bdmc.place(x = 20,y = 180)
xgsjt=[]
def xgfy_sgt(text):#新冠肺炎三件套
global xgsjt
print('执行前数量',len(xgsjt))
if text in xgsjt:
xgsjt.remove(text)
elif len(xgsjt)==3:
xgsjt.append('&&')
xgsjt.append(text)
else:
xgsjt.append(text)
if len(xgsjt)==4:
try:
print('执行中')
xgsjt.remove('&&')
print('成功')
except:
pass
print('执行后数量',len(xgsjt))
print(xgsjt)
def sgt_h():#三件套组件
global x,y,xgsjt
x=20
y=200
sgts = ['牢记佩戴口罩','保持社交距离','注意个人卫生','口罩还要戴','社交距离还要留','喷嚏咳嗽还要遮','双手还要经常洗','窗户还要尽量开']
for sgt in sgts: #用for循环的方式实现多按钮显
if x>=600:
y+=30
x=20
t = tk.Checkbutton(windows,text =sgt,font=('楷体',16),command=lambda arg=sgt: xgfy_sgt(arg))
t.place(x=x,y=y)
x+=250
hkfs=60#默认分数
def fs(num):#滑块分数
global hkfs
hkfs=num
def hkpf_h():#滑块组件
s1 = tk.Scale(windows, from_=60, to=100,orient=tk.HORIZONTAL,tickinterval=5,length=400,font=('楷体',13),command=fs)
s1.place(x=170,y=y+70)
def cz_h():
global xgsjt,xgfy_chioce_name,hkfs
sgt_h()#三件套组件
hkpf_h()#滑块组件
xgfymc_h()#新冠肺炎名称选择
xbxc_h()#性别选择函数
xgsjt=[]#重置防疫三件套选择结果
xgfy_chioce_name="MERS-CoV"#默认选择
hkfs=60#默认分数
name_enter.delete(0, 'end')
school_num_enter.delete(0, 'end')
try:
see_str_show.place_forget()
except:
pass
def sure_h():
global see_str_show
name_user=name_enter.get()
school_xh=school_num_enter.get()
if xb_enter.get()=='':
tkm.askyesno(title = '错误提示',message='数据不全,请输入完整后重试')
elif name_user=='':
tkm.askyesno(title = '错误提示',message='数据不全,请输入完整后重试')
elif school_xh=='':
tkm.askyesno(title = '错误提示',message='数据不全,请输入完整后重试')
else:
result = tkm.askokcancel(title = '提交确认',message='{}{},确认提交?'.format(name_user,school_xh))
if result==True:
if xgsjt==[]:
fy='我不知道防疫三件套的具体内容'
else:
fy='我认为防疫"三件套"指的是:{}'.format(str(xgsjt).replace('[','').replace(']','').replace("'",'').replace('&&','\n'))
see_str='我是{}生,名字是{},学号为{}\n{}\n此次新冠肺炎的正式名称是{}\n我为自己打{}分'.format(xb_enter.get(),name_user,school_xh,fy,xgfy_chioce_name,hkfs)
try:
see_str_show.place_forget()
except:
pass
see_str_show=tk.Label(windows,font=('楷体',15),justify="left",text=see_str)
see_str_show.place(x=70,y=y+200)
sgt_h()#三件套组件
hkpf_h()#滑块组件
pf=tk.Label(windows,font=('楷体',20),text='请拖动滑块,给自己平时的防疫行为打分:')
pf.place(x = 120,y = y+40)
cz = tk.Button(windows, text ="重置", command = cz_h,font=('楷体',15))
sure=tk.Button(windows, text ="确定", command = sure_h,font=('楷体',15))
cz.place(x=300,y=y+150)
sure.place(x=400,y=y+150)
windows.mainloop()
无图无真相
附图: