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

 

posted @ 2013-09-09 17:29  Hongten  阅读(6444)  评论(0编辑  收藏  举报
Fork me on GitHub