【python】tkinter GUI开发: Button和Entry的应用实战探索

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑

🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。

🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏: python图形化GUI编程tkinter精讲
景天的主页: 景天科技苑

文章目录

1.Button组件细讲

Button(按钮)用来执行用户的单击操作。Button 可以包含文本,也可以包含图像。按钮

被单击后会自动调用对应事件绑定的方法。

具体用法可以参考文档

https://insolor.github.io/effbot-tkinterbook-archive/

点进去查看Button用法

Button组件的参数详解




1.Button应用实战

【示例】Button 按钮用法(文字、图片、事件)

python 复制代码
"""测试Button组件的基本用法,使用面向对象的方式"""

from tkinter import *
from tkinter import messagebox

class Application(Frame):

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


    def createWidget(self):
        """创建组件"""
        # anchor,如果控件的空间大于文本所需的空间,此参数可控制文本的位置,默认值为'center',可选项有'e','s','w','n','nw','ne','sw','se','center',分别代表右、下、左、上、左上、右上、左下、右下、中间(类似于东南西北)
        self.btn01 = Button(root, text="登录",width=6,height=3,anchor=NE,command=self.login)
        self.btn01.pack()

        global photo
        photo = PhotoImage(file="imgs/数据分析.png")

        self.btn02 = Button(root, image=photo,width=500,height=100, command=self.login)
        self.btn02.pack()
        # self.btn02.config(state="disabled")  #设置按钮为禁用,图片也会显示为灰色


    def login(self):
        messagebox.showinfo("景天科技苑学习系统", "登录成功!欢迎开始学习!")


if __name__ == '__main__':
    root = Tk()
    root.geometry("500x360+200+300")
    app = Application(master=root)
    root.mainloop()

运行结果

2.Entry 单行文本框

Entry 用来接收一行字符串的控件。如果用户输入的文字长度长于 Entry 控件的宽度

时, 文字会自动向后滚动。如果想输入多行文本, 需要使用 Text 控件。

1.Entry中的参数

Entry(master=None, **options) (class)

master -- 父组件

**options -- 组件选项,下方表格详细列举了各个选项的具体含义和用法:


2.Entry中的方法

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 表示一页)

3.Entry应用实战

【示例】Entry 单行文本框实现简单登录界面

python 复制代码
"""测试Entry组件的基本用法,使用面向对象的方式"""

from tkinter import *
from tkinter import messagebox

class Application(Frame):

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


    def createWidget(self):
        """创建登录界面的组件"""
        self.label01 = Label(self,text="用户名")
        self.label01.pack()

        # StringVar变量绑定到指定的组件。
        # StringVar变量的值发生变化,组件内容也变化;
        # 组件内容发生变化,StringVar变量的值也发生变化。
        v1 = StringVar()
        self.entry01 = Entry(self,textvariable=v1)
        self.entry01.pack()
        #设置个默认值
        v1.set("admin")
        print(v1.get());print(self.entry01.get())


        # 创建密码框
        self.label02 = Label(self,text="密码")
        self.label02.pack()

        v2 = StringVar()
        '''
        show    1. 设置输入框如何显示文本的内容
                2. 如果该值非空,则输入框会显示指定字符串代替真正的内容
                3. 将该选项设置为 "*",则是密码输入框
        '''
        self.entry02 = Entry(self,textvariable=v2, show="*")
        self.entry02.pack()

        #创建个按钮
        Button(self,text="登录",command=self.login).pack()


    def login(self):
        username = self.entry01.get()
        pwd = self.entry02.get()

        print("去数据库比对用户名和密码!")
        print("用户名:"+username)
        print("密码:"+pwd)

        if username=="jingtian" and pwd=="123456":
            messagebox.showinfo("景天科技苑学习系统", "登录成功!欢迎开始学习!")
        else:
            messagebox.showinfo("景天科技苑学习系统","登录失败!用户名或密码错误!")


if __name__ == '__main__':
    root = Tk()
    root.geometry("400x130+200+300")
    app = Application(master=root)
    root.mainloop()

运行程序

当我们输错,会提示输入错误

输入正确的

提示登录成功

4.StringVar变量详细解析

Stringvar是tkinter里面的类型,继承了Variable

我们在pycharm中 show Diagram

可以查看常见的各种类型

我们定义不同的数据类型的变量时,可以选择不同的类型

可选类型有intVar(整形),DoubleVar(浮点型),BooleanVar(布尔型),StringVar(字符串)

相关推荐
程序猿小D16 分钟前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa
杰哥在此2 小时前
Python知识点:如何使用Multiprocessing进行并行任务管理
linux·开发语言·python·面试·编程
zaim14 小时前
计算机的错误计算(一百一十四)
java·c++·python·rust·go·c·多项式
PythonFun8 小时前
Python批量下载PPT模块并实现自动解压
开发语言·python·powerpoint
炼丹师小米8 小时前
Ubuntu24.04.1系统下VideoMamba环境配置
python·环境配置·videomamba
GFCGUO8 小时前
ubuntu18.04运行OpenPCDet出现的问题
linux·python·学习·ubuntu·conda·pip
985小水博一枚呀10 小时前
【深度学习基础模型】神经图灵机(Neural Turing Machines, NTM)详细理解并附实现代码。
人工智能·python·rnn·深度学习·lstm·ntm
萧鼎11 小时前
Python调试技巧:高效定位与修复问题
服务器·开发语言·python
IFTICing11 小时前
【文献阅读】Attention Bottlenecks for Multimodal Fusion
人工智能·pytorch·python·神经网络·学习·模态融合
大神薯条老师12 小时前
Python从入门到高手4.3节-掌握跳转控制语句
后端·爬虫·python·深度学习·机器学习·数据分析