zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    [knowledge][perl][pcre][sed] sed / PCRE 语法/正则表达式
    [knowledge][模式匹配] 字符匹配/模式匹配 正则表达式 自动机
    [daily] 内存越界的分析与定位
    [DPI] Cisco Application Visibility and Control
    [bigdata] palantir
    [daily][nfs] nfs客户端设置
    [knowledge][ETA] Encrypted Traffic Analytics
    [tcpreplay] tcpreplay高级用法--使用tcpreplay-edit进行循环动态发包
    [redhat][centos] 让不同小版本的CentOS7使用相同的内核版本
    [grub2] grub2修改启动顺序
  • 原文地址:https://www.cnblogs.com/hongten/p/hongten_python_tkinter_guess_number.html
Copyright © 2011-2022 走看看