Python Tkinter组件之Entry

1,313 阅读4分钟

玩转Python

这是我参与8月更文挑战的第24天,活动详情查看: 8月更文挑战

复习回顾

当我们第一次使用掘金APP时,我们会看到如下的登陆界面

  • 可爱的掘金图标是Label标签

  • 进行登陆按钮是Button按钮

  • 邮箱/手机栏和密码栏是Entry单文本输入框

Python Tkinter提供多种的组件,我们前面已经学习了Label和Button

本期,我们继续学习Widget子类单行文本框Entry组件相关属性和方法的学习

1. Entry/Text概述

Entry 是Python Tkinter 标准组件,用于接收用户键盘输入的字符串

Entry 单行文本框,用来接收一行字符串的组件。

  • 当输入的一行字符超过Entry大小时,会换行到下一行。
  • 主要用于表单填写等输入框场景

2. Entry常用方法

Entry 组件提供一些能操作字符串的方法。

方法作用
delete(first,last=None)删除文本框里面索引值
get()获取文本框的值
icursor(index)将光标移动到指定索引位置
index(index)返回指定的索引值
insert(index,s)向文本框插入值
select_adjust(index)选中指定索引和关标所在位置之前的值
select_clear()清空文本框
select_from(index)设置光标的位置,通过索引值index来设置
select_present()如果选中,返回True
select_range(start,end)选中指定索引位置的值
select_to(index)选中指定索引与光标之间的值

3. Entry常用属性

属性含义
height设置文本框的高度,高度值每加1则加一行
width设置文本框的宽度,宽度值每加1则加一个字节
insert文本框插入数据,可以指定插入数据的位置
delete删除文本框中的数据,可以通过数据位置,指定删除的数据
get获取文本框中的数据,可以通过数据位置,指定获取的数据
relief文本框样式,设置控件显示效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。
bd设置文本框的边框大小,值越大边框越宽
bg设置文本框默认背景色
fg设置文本框默认前景色,即字体颜色
font文本字体,文字字号,文字字形。字形有overstrike/italic/bold/underline
state文本框状态选项,状态有DISABLED/NORMAL,DISABLED状态文本框无法输入,NORMAL状态可以正常输入
highlightcolor设置文本框点击后的边框颜色
highlightthickness设置文本框点击后的边框大小

4. 小试牛刀

📝我们使用Entry和Text组件来实操一下:

Entry实现登陆界面如下:

  1. 创建Account和Password是Label组件

    self.lab = Label(self,text = "Account")
    self.lab.pack()
    
    self.lab2 = Label(self, text="Password")
    self.lab2.pack()
    
    
  2. 账号和密码需要使用Entry组件来创建

    • 账号/密码值是动态变化的,因此我们要使用到StringVar

      1. ⭐ StringVar知识点

      • StringVar继承Variable类型

        variable

      • StringVar变量绑定到指定的组件上

      • StringVar变量的值发生变化,组件内容也会发生变化

      • 组件内容发生变化,StringVar变量的值也发生变化

    • 再通过Entry组件的Textvariable对StringVar进行绑定

    因此,Account/Password 输入框就可以代码实现

    ```
     self.lab = Label(self,text = "Account")
     self.lab.pack()
    
     v1 = StringVar()
     self.En = Entry(self,textvariable = v1)
     self.En.pack()
     v1.set("admin")
     print(v1.get());print(self.En.get())
    
     self.lab2 = Label(self, text="Password")
     self.lab2.pack()
    
     v2 = StringVar()
     self.En2 = Entry(self, textvariable=v2,show = "*")
     self.En2.pack()
    ```
    
  3. 添加登陆按钮,绑定登陆事件

    Button(self,text = "Login",command = self.login).pack()
    
  4. 整体实现框架使用官方推荐的面向对象写法,使用Application(Frame)把创建组件过程封装到CreateWidgetEntry()方法里,使用构造函数对Appication实例对象初始化就创建好了

  5. 最后完整实现的代码如下

from tkinter import *

class Application(Frame):

    def __init__(self,master=None):
        # super()代表的是父类的定义,而不是父类对象
        super().__init__(master)
        self.master = master
        self.pack()
        self.CreatWidgetEntry()
        
    def CreatWidgetEntry(self):

        self.lab = Label(self,text = "Account")
        self.lab.pack()

        v1 = StringVar()
        self.En = Entry(self,textvariable = v1)
        self.En.pack()
        v1.set("admin")
        print(v1.get());print(self.En.get())

        self.lab2 = Label(self, text="Password")
        self.lab2.pack()

        v2 = StringVar()
        self.En2 = Entry(self, textvariable=v2,show = "*")
        self.En2.pack()


        Button(self,text = "Login",command = self.login).pack()

    def login(self):
        
        name =  self.En.get()
        
        pdw =   self.En2.get()

        print("Account:"+name)
        print("Password:" + pdw )
        
        print("数据校验")
        
        if name == "admin" and pdw =="1234567":

            messagebox.showinfo("Juejin","登陆成功")
        else:
            messagebox.showinfo("Juejin", "密码或者账号错误")

root = Tk()
root.geometry("400x130+200+300")
root.title("MyfirstAPP")
app = Application(master=root)

root.mainloop()

总结

本期,我们学习Tkinter组件之文本输入框Entry单行文本框常用于登陆界面用户命名、密码等表单填写场景

在工作场景只需要单行输入的,可以选择使用Entry组件,同时它也提供对文本进行删除、修改、插入等方法

以上是本期内容,欢迎大佬们点赞评论指正,下次见~ღ( ´・ᴗ・` )比心🌹