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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM