python用tkinter随机数猜数字大小
没事做,看到好多人用scratch做的猜大小的示例,也用python的tkinter搞一个猜大小的代码玩玩。
猜数字代码
from tkinter import *
from random import randint
# 定义确定按钮的点击事件
def hit(x,y):
global s_Lab
print(x.get(),y)
try:
n=int(x.get())
if n>y:s="猜大了"
if n==y:
s="%d,你猜对了"%y
if n<y:s="猜小了"
s_Lab.set(s)
x.set('')
except:
s_Lab.set("输入必须是数字")
x.set('')
# 定义重置按钮的事件
def reset():
global n_rand
num_E.set('')
s_Lab.set(ss)
n_rand=randint(s_n.get(),e_n.get())
print(n_rand)
# 定义回车键事件
def on_r(evt):
hit(num_E,n_rand)
def on_res(evt):
reset()
def n_rand():
global n_rand
try:
s, n = s_n.get(), e_n.get()
n_rand=randint(s,n)
print(n_rand)
s_Lab.set("猜一个%d到%d的数"%(s,n))
except:
s_Lab.set("请正确设置")
#定义窗口
win=Tk()
win.title('猜一猜')
win.geometry('300x220')
frm1=LabelFrame(win,text="随机数范围设置")
frm1.pack(padx=10,pady=5)
a_lb=Label(frm1,text="设置起始与结束值,初始随机数状态为0").pack()
s_n=IntVar()
s_E1=Entry(frm1,width=10,textvariable=s_n).pack(side='left',padx=10,pady=5)
z_lb=Label(frm1,text="至").pack(side='left',pady=5)
e_n=IntVar()
e_E2=Entry(frm1,width=10,textvariable=e_n).pack(side='left',padx=10,pady=5)
set_btn=Button(frm1,width=10,text="设置",command=n_rand).pack(side='right',padx=10,pady=5)
# 随机取一个1~100的整数,标签的初始显示字符
n_rand=randint(0,0)
ss="猜一个整数"
# frm2=tkinter.LabelFrame(win)
frm2=Frame(win)
frm2.pack(padx=10,pady=5)
# Label是第1个控件,从左向右布局
s_Lab=StringVar() #定义动态字符串
s_Lab.set(ss)
s=Label(frm2, bg='red', fg='yellow',width=25,textvariable=s_Lab)
s.pack(side=LEFT, fill=BOTH, padx=5, pady=5)
# 3个Button自上而下布局
num_E=StringVar() #定义动态字符串
Entry(frm2, width=10,textvariable=num_E,justify=CENTER).pack(padx=5, pady=5)
r_btn=Button(frm2, text='确定', width=10,command=lambda:hit(num_E,n_rand))
r_btn.pack(padx=5, pady=5)
Button(frm2, text='重置', width=10,command=reset).pack(padx=5, pady=5)
#绑定“enter”事件与“shift"事件
win.bind('<Return>', on_r)
win.bind('<Shift_L>', on_res)
# win.bind('<Key>', on_res)
win.mainloop()
界面显示如下