专栏首页Hongtenpython开发_tkinter_自己做的猜数字小程序

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一看就懂的快速排序方法_java版

    =================================================

    Hongten
  • Linux 学习_crontab

      crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

    Hongten
  • 一看就懂的冒泡排序方法_java版

    =================================================

    Hongten
  • 五分钟深入 Hadoop 输入优化

    当面试公司问起 Hadoop 经验时,我们当然不能只停留在 Mapper 干了什么、Reducer 干了什么。没有 Performance Tuning 怎么...

    包子面试培训
  • struts2架构网站漏洞修复详情与利用漏洞修复方案

    struts2从开发出来到现在,很多互联网企业,公司,平台都在使用apache struts2系统来开发网站,以及应用系统,这几年来因为使用较多,被攻击者挖掘出...

    技术分享达人
  • 【独家】并行计算性能分析与优化方法(PPT+课程精华笔记)

    [导读]工业4.0、人工智能、大数据对计算规模增长产生了重大需求。近年来,中国高性能计算机得到突飞猛进的发展,从“天河二号”到“神威·太湖之光”,中国超级计算机...

    数据派THU
  • 小程序开发之路-注册并新建一个小程序

    只要填写相关的信息就可以了。 注册结束以后呢,我们登陆就可以了,登陆的话也是一样的链接,直接可以立即登陆就可以了。登陆进去以后是这样的:

    何处锦绣不灰堆
  • 面试系列:十个海量数据处理方法大总结

    本文将简单总结下一些处理海量数据问题的常见方法。当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本...

    王知无
  • 处理海量数据的10种常见方法

    本文将介绍10种处理海量数据问题的常见方法,也可以说是对海量数据的处理方法进行一个简单的总结,希望对你有帮助。

    挖掘大数据
  • 【线性回归】读取txt

    绝命生

扫码关注云+社区

领取腾讯云代金券