PythonTkinter组件之Entry

玩转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组件,同时它也提供对文本进行删除、修改、插入等方法

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