python开发_tkinter_自己做的猜数字小程序
读到这篇文章[python 3.3下结合tkinter做的猜数字程序]的时候,就复制了代码,在自己机器上面跑了一下
源程序存在一个缺陷:
即当用户答对了以后,用户再点击'猜'按钮,最上面的提示标签还会变化
而实际情况应该是:用户答对了以后,'猜'按钮不随用户点击而使得提示标签发生变化。
以下是我对程序做的一些改进...
运行效果:
当用户猜对了以后:
修改后的代码:
1 # -*- coding: utf-8 -*- 2 import tkinter as tk 3 import sys 4 import random 5 import re 6 7 number = random.randint(0,1024) 8 running = True 9 num = 0 10 nmaxn = 1024 11 nminn = 0 12 13 def eBtnClose(event): 14 root.destroy() 15 16 def eBtnGuess(event): 17 global nmaxn 18 global nminn 19 global num 20 global running 21 #修改缺陷:用户答对了,提示标签还提示信息 Edit by Hongten 2013-09-09 22 #即用户在答对了以后,提示标签不应该再随着用户点击'猜'按钮而变化 23 if running: 24 val_a = int(entry_a.get()) 25 if val_a == number: 26 labelqval("恭喜答对了!") 27 num+=1 28 running = False 29 numGuess() 30 elif val_a < number: 31 if val_a > nminn: 32 nminn = val_a 33 num+=1 34 label_tip_min.config(label_tip_min,text=nminn) 35 labelqval("小了哦") 36 else: 37 if val_a < nmaxn: 38 nmaxn = val_a 39 num+=1 40 label_tip_max.config(label_tip_max,text=nmaxn) 41 labelqval("大了哦") 42 else: 43 labelqval('你已经答对啦...') 44 45 def numGuess(): 46 if num == 1: 47 labelqval('我靠!一次答对!') 48 elif num < 10: 49 labelqval('= =十次以内就答对了牛逼。。。尝试次数:'+str(num)) 50 elif num < 50: 51 labelqval('还行哦尝试次数:'+str(num)) 52 else: 53 labelqval('好吧。。。。。您都试了超过50次了。。。。尝试次数:'+str(num)) 54 55 def labelqval(vText): 56 label_val_q.config(label_val_q,text=vText) 57 58 root = tk.Tk(className="比大小游戏") 59 root.geometry("400x90+200+200") 60 61 line_a_tip = tk.Frame(root) 62 label_tip_max = tk.Label(line_a_tip,text=nmaxn) 63 label_tip_min = tk.Label(line_a_tip,text=nminn) 64 label_tip_max.pack(side = "top",fill = "x") 65 label_tip_min.pack(side = "bottom",fill = "x") 66 line_a_tip.pack(side = "left",fill = "y") 67 68 line_question = tk.Frame(root) 69 label_val_q = tk.Label(line_question,width="80") 70 label_val_q.pack(side = "left") 71 line_question.pack(side = "top",fill = "x") 72 73 line_input = tk.Frame(root) 74 entry_a = tk.Entry(line_input,width="40") 75 btnGuess = tk.Button(line_input,text="猜") 76 entry_a.pack(side = "left") 77 entry_a.bind('<Return>',eBtnGuess) 78 btnGuess.bind('<Button-1>',eBtnGuess) 79 btnGuess.pack(side = "left") 80 line_input.pack(side = "top",fill = "x") 81 82 83 line_btn = tk.Frame(root) 84 btnClose = tk.Button(line_btn,text="关闭") 85 btnClose.bind('<Button-1>',eBtnClose) 86 btnClose.pack(side="left") 87 line_btn.pack(side = "top") 88 89 labelqval("请输入0到1024之间任意整数:") 90 entry_a.focus_set() 91 92 print(number) 93 root.mainloop()