这是我参与8月更文挑战的第24天,活动详情查看: 8月更文挑战
复习回顾
当我们第一次使用掘金APP时,我们会看到如下的登陆界面
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实现登陆界面如下:
-
创建Account和Password是Label组件
self.lab = Label(self,text = "Account") self.lab.pack() self.lab2 = Label(self, text="Password") self.lab2.pack()
-
账号和密码需要使用Entry组件来创建
-
账号/密码值是动态变化的,因此我们要使用到StringVar
-
⭐ StringVar知识点
-
StringVar继承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() ```
-
-
添加登陆按钮,绑定登陆事件
Button(self,text = "Login",command = self.login).pack()
-
整体实现框架使用官方推荐的面向对象写法,使用Application(Frame)把创建组件过程封装到CreateWidgetEntry()方法里,使用构造函数对Appication实例对象初始化就创建好了
-
最后完整实现的代码如下
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组件,同时它也提供对文本进行删除、修改、插入等方法
以上是本期内容,欢迎大佬们点赞评论指正,下次见~ღ( ´・ᴗ・` )比心🌹