讀到這篇文章[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()