tkinter模块(四)

Entry

单行输入框

from tkinter import *
fields = ['Name', 'Job', 'Pay']
input_prompt = 'Please input' #设置输入框内的默认提示文本

def fench(entries):
	 # 用来注册到按钮Fench上command的函数,获取tkinter变量列表,如果tkinter变量属性是默认文本,说明该输入框未输入,打印undef
    for entry in entries:
        if entry.get() != input_prompt:
            print('input => ', entry.get())
        else:
            print('input => undef')


def judge_focusout(e):
	# 失去焦点操作函数:输入框失去焦点时,如无输入值则设置默认文本
    if not e.get():
        e.set(input_prompt)


def judge_focusin(e):
    # 获得焦点操作函数:输入框获取焦点时,如内容为默认文本则清空默认文本
    if e.get() == input_prompt:
        e.set('')


def make_form(root, fields):
    # 创建一列Frame,每个Frame包括左边一个Label输入名,右边一个Entry输入框,返回一个包含所有Entry变量的列表
    entries = []  # 返回的tkinter变量列表
    for field in fields:
        row = Frame(root)
        label = Label(row, text=field, width=5)
        e = StringVar()  # 创建tkinter变量(StringVar,IntVar,DoubleVar,BooleanVar)
        entry = Entry(row, textvariable=e)  # 创建文本框
        e.set(input_prompt)  # 设置出事文本
        entry.bind('<FocusIn>', lambda event, e=e: judge_focusin(e))  # 获取焦点事件操作
        entry.bind('<FocusOut>', lambda event, e=e: judge_focusout(e))  # 失去焦点事件操作
        label.pack(side=LEFT)
        entry.pack(side=RIGHT, expand=YES, fill=X)
        row.pack(side=TOP, expand=YES, fill=X)
        entries.append(e)
    return entries


if __name__ == '__main__':
    root = Tk()
    entries = make_form(root, fields)
    root.bind('<Return>', lambda event: fench(entries))  # 点击回车时产生点击Fench按键的效果
    Button(root, text='Fench', command=lambda: fench(entries)).pack(side=LEFT)
    Button(root, text='Quit', command=root.quit).pack(side=RIGHT)
    root.mainloop()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值