tkinter使用Notebook写分页形式的“猜数字”

上次用tkinter写的“猜数字”代码,改进一下,使用Notebook。

# 导入模块
import tkinter as tk
from tkinter import ttk
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="猜小了"
        # if y == 0: s = "默认值为0,先设置"
        s_Lab.set(s)
        x.set('')
    except:
        s_Lab.set("输入必须是数字")
        x.set('')

# 定义按钮的事件
def key_re(evt):
    hit(num_E,n_rand)

# 定义随机数设置
def ran_set():
    global n_rand
    try:
        s, n = s_n.get(), e_n.get()
        n_rand=randint(s,n)
        print(n_rand)
        a_lbv.set("已设置好一个%d-%d范围内的随机数"%(s,n))
        s_Lab.set("猜一个%d-%d范围内的随机数"%(s,n))
    except:
        a_lbv.set("请正确设置")

# 创建窗口对象
root = tk.Tk()

# 窗口标题
root.title("猜大小")

# 设置窗口大小及位置
root.geometry("300x160+500+200")
root.resizable(0,0)     # 禁止改变窗口大小
# 设置一个notebook容器控件
note = ttk.Notebook(root)
note.pack(fill="both", expand=True)

n_rand=randint(0,100)   #定义初始随机数

# 定义frm2
frm1 = tk.Frame(note)
ss="猜一个整数(默认0-100之间)"
# Label是第1个控件,从左向右布局
s_Lab=tk.StringVar()       #定义动态字符串
s_Lab.set(ss)
s=tk.Label(frm1, bg='red', fg='yellow',width=25,textvariable=s_Lab)
s.pack(side="left",padx=5, pady=5,fill="both")
# 3个Button自上而下布局
num_E=tk.StringVar()       #定义动态字符串
e=tk.Entry(frm1,  width=10,textvariable=num_E)
e.pack(padx=5, pady=30)
e.focus_set()       # 设置焦点
r_btn=tk.Button(frm1, text='确定', width=10,command=lambda:hit(num_E,n_rand))
r_btn.pack(padx=5)

root.bind('<Return>', key_re)   # 绑定回车键

frm1.pack(fill="both", expand=True)
note.add(frm1, text="猜数字")      # 将frm1加入到note容器

# 定义frm2
frm2 = tk.Frame(note,padx=20,pady=20)

a_lbv=tk.StringVar()
a_lbv.set("设置起始与结束值,初始随机数为0-100")
a_lb=tk.Label(frm2,textvariable=a_lbv).pack(pady=10)
s_n=tk.IntVar()
s_E1=tk.Entry(frm2,width=10,textvariable=s_n).pack(side='left',padx=10,pady=5)
z_lb=tk.Label(frm2,text="至").pack(side='left',pady=5)
e_n=tk.IntVar()
e_n.set(100)
e_E2=tk.Entry(frm2,width=10,textvariable=e_n)
e_E2.pack(side='left',padx=10,pady=5)
set_btn=tk.Button(frm2,width=10,text="设置",command=ran_set)
set_btn.pack(side='right',padx=10,pady=5)


frm2.pack(ipadx=50,ipady=20)
note.add(frm2, text="设置")   # 将frm2加入到note容器


# 进入消息循环
root.mainloop()

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值