说明:
Entry(输入框) 组件通常用于获取用户的输入文本。
使用条件:
Entry 组件在GUI界面的设计中主要用于单行文本的键入(实际键入的内容可以比显示的空间更长,此种情况下结束鼠标和位移键能够产看自己输入的隐藏内容),通过几何外观图形属性设计可以改变实际的元素表现
如果你希望接收多行文本的输入,可以使用 Text 组件(后面介绍)。
常见用法:

- 普通输入框
作为输入框最重要的属性是输入内容的获取:
eg:

 par1 = tk.StringVar()par1.set('xxxx')Entry(window, width=30, foreground='green', textvariable=par1).place(x=180, y=30)par1.get() # 获取变量参数的键入内容

- 光标移动触发事件

from tkinter import *
import pyodbc
import tkinter as tkwindow = tk.Tk()
window.geometry('600x400')connect = pyodbc.connect(r'DRIVER={SQL Server Native Client 10.0};'r''r'SERVER=(local);'r''r'DATABASE=DBtest;UID=sa;PWD=726803')
cursor = connect.cursor()def data_save():  # .........................数据存储函数print("the lengh is :", len(str(e1.get())))if len(str(e1.get())) > 0:Production_mode = par.get()Equipment_no = par1.get()Date = par2.get()sql1 = "INSERT INTO display_board (Production_mode, Equipment_no, Date ) VALUES ('%s', '%s', '%s')" % (Production_mode, Equipment_no, Date)print("Pro_mode_entry_night\n, Pro_equ_no\n, Date\n", Production_mode, Equipment_no, Date)cursor.execute(sql1)connect.commit()print("存储任务完成")return Trueelse:print("等待下一轮存储任务指令")e1.delete(0, "end")return Falsedef test():if len(e1.get()) > 4:print("正确!")return Trueelse:print("错误!")print("the lengh is :", len(e1.get()))e1.delete(0, "end")return Falsev = tk.StringVar()
par = tk.StringVar()
par1 = tk.StringVar()
par2 = tk.StringVar()
for i in range(0, 3):if i == 0:par.set('')Entry(window, width=30, foreground='green', textvariable=par).place(x=180, y=30)elif i == 1:par1.set('')Entry(window, width=30, foreground='green', textvariable=par1).place(x=180, y=60)else:par2.set('')Entry(window, width=30, foreground='green', textvariable=par2).place(x=180, y=90)
e1 = tk.Entry(window, textvariable=v, validate="focusout", validatecommand=data_save)  # 鼠标移走数据存储
e1.pack(padx=180, pady=120)
window.mainloop()

- 与其他事件绑定使用
将 Entry 组件和 Button 组件配合,点击 “获取信息” 按钮时自动清空输入框并将内容输出:

import tkinter as tk
master = tk.Tk()
tk.Label(master, text="作品:").grid(row=0)
tk.Label(master, text="作者:").grid(row=1)
e1 = tk.Entry(master)
e2 = tk.Entry(master)
e1.grid(row=0, column=1, padx=10, pady=5)
e2.grid(row=1, column=1, padx=10, pady=5)def show():print("作品:《%s》" % e1.get())print("作者:%s" % e2.get())e1.delete(0, "end")e2.delete(0, "end")tk.Button(master, text="获取信息", width=10, command=show).grid(row=3, column=0, sticky="w", padx=10, pady=5)
tk.Button(master, text="退出", width=10, command=master.quit).grid(row=3, column=1, sticky="e", padx=10, pady=5)master.mainloop()

Entry常用选项定义
参考:https://blog.csdn.net/qq_38970783/article/details/88851045
经常用到的一些属性:

  • validate
    说明:
    1. 该选项设置是否启用内容验证
     Entry(window, textvariable=v, validate="focusout", validatecommand=data_save)# 当鼠标移开触发data_save函数
  • validatecommand (同“ vcmd ”)
    说明:
    1. 该选项指定一个验证函数,用于验证输入框内容是否合法
    2. 验证函数需要返回 True 或 False 表示验证结果
    3. 注意,该选项只有当 validate 的值非 “none” 时才有效
  • textvariable
    说明:
    1. 指定一个与输入框的内容相关联的 Tkinter 变量**(通常是 StringVar)**
    2. 当输入框的内容发生改变时,该变量的值也会相应发生改变
  • width
    说明:
    1. 设置输入框的宽度,以字符为单位
    2. 默认值是 20
    3. 对于变宽字体来说,组件的实际宽度等于字体的平均宽度乘以 width 选项的值

方法

delete(first, last=None)
– 删除参数 first 到 last 范围内(包含 first 和 last)的所有内容
– 如果忽略 last 参数,表示删除 first 参数指定的选项
– 使用 delete(0, END) 实现删除输入框的所有内容

get()
– 获得当前输入框的内容

icursor(index)
– 将光标移动到 index 参数指定的位置
– 这同时也会设置 INSERT 的值

index(index)
– 返回与 index 参数相应的选项的序号(例如 e.index(END))

insert(index, text)
– 将 text 参数的内容插入到 index 参数指定的位置
– 使用 insert(INSERT, text) 将 text 参数指定的字符串插入到光标的位置
– 使用 insert(END, text) 将 text 参数指定的字符串插入到输入框的末尾

scan_dragto(x)
– 见下方 scan_mark(x)

scan_mark(x)
– 使用这种方式来实现输入框内容的滚动
– 需要将鼠标按下事件绑定到 scan_mark(x) 方法(x 是鼠标当前的水平位置),然后再将 事件绑定到 scan_dragto(x) 方法(x 是鼠标当前的水平位置),就可以实现输入框在当前位置和 sacn_mack(x) 指定位置之间的水平滚动

select_adjust(index)
– 与 selection_adjust(index) 相同,见下方解释

select_clear()
– 与 selection_clear() 相同,见下方解释

select_from(index)
– 与 selection_from(index) 相同,见下方解释

select_present()
– 与 selection_present() 相同,见下方解释

select_range(start, end)
– 与 selection_range(start, end) 相同,见下方解释

select_to(index)
– 与 selection_to(index) 相同,见下方解释

selection_adjust(index)
– 该方法是为了确保输入框中选中的范围包含 index 参数所指定的字符
– 如果选中的范围已经包含了该字符,那么什么事情也不会发生
– 如果选中的范围不包含该字符,那么会从光标的位置将选中的范围扩展至该字符

selection_clear()
– 取消选中状态

selection_from(index)
– 开始一个新的选中范围
– 会设置 ANCHOR 的值

selection_present()
– 返回输入框是否有处于选中状态的文本
– 如果有则返回 True,否则返回 False

selection_range(start, end)
– 设置选中范围
– start 参数必须必 end 参数小
– 使用 selection_range(0, END) 选中整个输入框的所有内容

selection_to(index)
– 选中 ANCHOR 到 index 参数的间的所有内容

xview(index)
– 该方法用于确保给定的 index 参数所指定的字符可见
– 如有必要,会滚动输入框的内容

xview_moveto(fraction)
– 根据 fraction 参数给定的比率调整输入框内容的可见范围
– fraction 参数的范围是 0.0 ~ 1.0,0.0 表示输入框的开始位置,1.0 表示输入框的结束位置

xview_scroll(number, what)
– 根据给定的参数水平滚动输入框的可见范围
– number 参数指定滚动的数量,如果是负数则表示反向滚动
– what 参数指定滚动的单位,可以是 UNITS 或 PAGES(UNITS 表示一个字符单元,PAGES 表示一页)

关于验证详解


validatecommand 选项指定一个验证函数,该函数只能返回 True 或 False 表示验证的结果。一般情况下验证函数只需要知道输入框的内容即可,可以通过 Entry 组件的 get() 方法获得该字符串。

import tkinter as tk
master = tk.Tk()def test():vif len(v.get()) > 4:print("键入内容合法")return Trueelse:print("键入内容不合法")e1.delete(0, "end")return Falsedef test1():print("我被调用了......")return Truev = tk.StringVar()
tk.Entry(master, textvariable=v, validate="focusout", validatecommand=test, invalidcommand=test1).pack(padx=10, pady=10)
# 将焦点转移到第二个输入框,validatecommand 指定的验证函数被触发并返回 False,接着 invalidcommand 被触发
master.mainloop()

将焦点转移到第二个输入框,validatecommand 指定的验证函数被触发并返回 False,接着 invalidcommand 被触发

python 之GUI设计:Entry组件相关推荐

  1. Python Qt GUI设计:信号与槽的使用方法(基础篇—7)

    目录 1.信号与槽的概念 2.信号与槽的基础函数 2.1.创建信号函数 2.2.连接信号函数 2.3.断开信号函数 2.4.发射信号函数 3.信号和槽的使用方法 3.1.内置信号与槽的使用 3.2.自 ...

  2. Python Qt GUI设计:窗口布局管理方法【强化】(基础篇—6)

    目录 1. 水平布局类(QHBoxLayout) 2.垂直布局类(QVBoxLayout) 3.网格布局类(QGridLayout) 3.1.单一的网络布局 3.2.跨越行.列的网络布局 4.表单布局 ...

  3. Python Qt GUI设计:窗口布局管理方法【基础】(基础篇—5)

    目录 1.布局管理器进行布局 2.容器控件进行布局 3.geometry属性:控件绝对布局 4.sizePolicy属性:微调优化控件布局 Qt Designer提供4种窗口布局方式,分别如下: Ve ...

  4. 九十一、Python的GUI系列 | QT组件篇

    @Author:Runsen @Date:2020/7/13 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...

  5. Python GUI设计——Entry文本框、文字区域Text

    目录 1.Entry 1.1基本概念 1.2使用show参数隐藏输入的字符 1.3Entry的get()方法 1.4Entry的insert()方法 1.5Entry的delete()方法 1.6计算 ...

  6. Python Qt GUI设计:将UI文件转换为Python文件的三种妙招(基础篇—2)

    目录 1.创建项目 2.将.ui文件生成.py文件 2.1.Eric 6编译 2.2.Python命令行编译 2.3.脚本编译 3.界面.逻辑分离思想 在开始本文之前提醒各位朋友,Python记得安装 ...

  7. Python Qt GUI设计:QPushButton、QRadioButton和QCheckBox按钮类(基础篇—12)

    目录 1.QPushButton按钮类 2.QRadioButton按钮类 3.QCheckBox按钮类 在GUI设计中,按钮都是最重要的和常用的触发动作请求的方式,用来与用户进行交互操作.在PyQt ...

  8. python界面GUI设计、tkinter设计界面初步教程

    如果没有时间仔细看完这篇文章的话可以现在下载PAGE+TCL然后直接输入最后代码运行程序即可. python可以使用tkinter库来实现小程序制作,还是很方便的,比较大型程序可以采用pyqt来制作G ...

  9. Python Qt GUI设计:UI界面可视化组件、属性概述(基础篇—4)

    目录 1.界面组件 1.1.布局组件(Layouts) 1.2.分隔组件(Spacers) 1.3.按钮组件(Buttons) 1.4.表项视图(Item Views) 1.5.表项组件(Item W ...

最新文章

  1. Java - 初识Java
  2. CSS之引入方式和选择器
  3. 嵌入式ARM微处理器选型指南
  4. C语言中return和exit的区别
  5. 任务记录:OEA 框架中的多类型树控件
  6. 贵阳龙里计算机培训,贵州省龙里中等职业学校机械加工技术专业
  7. hive2 mysql_架构hive2mysql流程
  8. 轻量化网络:SqueezeNet
  9. 9 位 IEEE Fellow 确认出席 2019 嵌入式智能国际大会!
  10. 李彦宏:AI 企业要保护隐私;罗永浩回应酷派“欠钱不还”;ofo 郑州公司人去楼空 | 极客头条...
  11. 本地yum源安装teamviewer
  12. 将小度WiFi改造为无线网卡(小度WiFi能够接收WiFi信号)
  13. webapp封装 苹果app证书
  14. 民法学习入门的“听说读写”之道
  15. 我的世界服务器的启动器在哪个文件夹,原神启动器在哪 启动器位置文件介绍...
  16. Linux之vi和vim编辑器常用命令
  17. Android OpenCV(三十二):霍夫直线检测
  18. CSS3 动画效果
  19. Gem5模拟器,详解官网教程Event-driven programming(五)
  20. codeforces Hello 2022

热门文章

  1. 用 Java 爬小姐姐图片,这个厉害了。。。
  2. GitHub 上 6 款牛哄哄的后台模板
  3. 2 个月的面试亲身经历告诉大家,如何进入 BAT 等大厂?
  4. 小程序中ajax返回数据,请问在小程序中如何从请求success中将数据返回给对象data?...
  5. java 判断日期周几_Java 输入一个日期,判断是星期几
  6. Dungeon Master(三维bfs)java
  7. Effective Java:创建和销毁对象
  8. Java 里的字符串处理类StringBuffer简介
  9. 多线程情况下创建连接池
  10. excel文件修复工具_Windows商店上架文件恢复工具!仅8.29MB,纯净无捆绑,80%修复率...