[案例]:使用Tkinter开发猜数字游戏,运行效果如图所示
要求:在该游戏中,计算机随机生成1024以内的数字,玩家去猜,猜的数字过大、过小都会给出提示,并且修改提示猜数字区间,要统计玩家猜的次数
import tkinter as tk import random number=random.randint(0,1024) # 玩家要猜的数字 running=True num=0 # 猜的次数 nmaxn=1024 # 提示猜测范围的最大数 nminn=0 # 提示猜测范围的最小数
def eBtnClose(event): # "关闭"按钮事件函数 root.destroy() def eBtnGuess(event): # "猜"按钮事件函数 # 全局变量 global nmaxn global nminn global num global running if running: val_a=int(entry_a.get()) # 获取猜的数字并转换成数字 if val_a==number: labelqval("恭喜答对了!") num+=1 running=False numGuess() # 显示猜的次数 elif val_a<number: # 猜小了 if val_a>nminn: nminn=val_a # 修改提示猜测范围的最小数 num+=1 labelqval("小了哦,请输入"+str(nminn)+"到"+str(nmaxn)+"之间任意整数:") else: if val_a<nmaxn: nmaxn=val_a # 修改提示猜测范围的最大数 num+=1 labelqval("大了哦,请输入" + str(nminn) + "到" + str(nmaxn) + "之间任意整数:") else: labelqval('你已经答对啦...') # 显示猜的次数 def numGuess(): if num==1: labelqval('一次答对了!') elif num<15: labelqval('==15次以内就答对了牛。。。尝试次数:'+str(num)) else: labelqval('好吧,你都试了超过15次了。。。尝试次数:'+str(num)) def labelqval(vText): label_val_q.config(label_val_q,text=vText) # 修改提示标签文字
root=tk.Tk(className="猜数字游戏") root.geometry("400x90+200+200") label_val_q=tk.Label(root,width="80") # 提示标签 label_val_q.pack(side="top")
entry_a=tk.Entry(root,width="40") # 单行输入文本框 btnGuess=tk.Button(root,text="猜") # "猜"按钮 entry_a.pack(side="left") entry_a.bind('',eBtnGuess) # 绑定事件 btnGuess.bind('',eBtnGuess) # "猜"按钮 btnGuess.pack(side="left") btnClose=tk.Button(root,text="关闭") # "关闭"按钮 btnClose.bind('',eBtnClose) btnClose.pack(side="left") labelqval("请输入0到1024之间任意整数:") entry_a.focus_set() print(number) root.mainloop()