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

news2024/11/8 7:44:01

在这里插入图片描述

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

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

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。

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

文章目录

  • 1.Button组件细讲
    • 1.Button应用实战
  • 2.Entry 单行文本框
    • 1.Entry中的参数
    • 2.Entry中的方法
    • 3.Entry应用实战
    • 4.StringVar变量详细解析

1.Button组件细讲

Button(按钮)用来执行用户的单击操作。Button 可以包含文本,也可以包含图像。按钮
被单击后会自动调用对应事件绑定的方法。
具体用法可以参考文档
https://insolor.github.io/effbot-tkinterbook-archive/
在这里插入图片描述

点进去查看Button用法
在这里插入图片描述

Button组件的参数详解

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.Button应用实战

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

"""测试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 单行文本框实现简单登录界面

"""测试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(字符串)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1813708.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL----排序ORDER BY

在对数据进行处理的时候,我们通常需要对读取的数据进行排序。而 MySQL 的也提供了 ORDER BY 语句来满足我们的排序要求。 ORDER BY 可以按照一个或多个列的值进行升序(ASC)或降序(DESC)排序。 语法 SELECT column1…

航班进出港管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,用户管理,航班信息管理,航飞降落请求管理,公告信息管理 前台账户功能包括:系统首页,个人中心,公告信息&a…

中国新兴的数字证书品牌——JoySSL

JoySSL是一个基于全球可信顶级根创新推出的新一代https数字证书,也是中国为数不多的自主品牌SSL证书。以下是关于JoySSL的详细介绍: 1 品牌背景: JoySSL是网盾安全旗下的产品,专注于网络安全技术服务、安全防护系统集成、数据安…

计算机网络知识CIDR(无类别域区间路由)

目录 介绍 基本信息 优点与关联 如何计算判定范围(你应该是来看这个的,前面是水字数的) 省流版 介绍 无类别域间路由(Classless Inter-Domain Routing、CIDR)是一个用于给用户分配IP地址以及在互联网上有效地路由…

【SkiaSharp绘图】01使用SkiaSharp绘制Hello World

文章目录 SkiaSharp简介主要特点适用场景 SkiaSharp的Hello World!1、创建一个.NET Framework项目2、拖入SKGLControl控件GLControl、SKControl、SKGLControl对比GLControlSKControlSKGLControl选择和使用场景高性能的选择 SKGLControl 3、绘制Hello World 为何选择SkiaSharpIm…

绘唐科技官网

绘唐科技AI工具是一系列经过训练的人工智能工具,旨在提供各种智能化的解决方案。这些工具可以应用于多个领域,包括自然语言处理、图像识别、语音识别、机器学习等。 其中,自然语言处理工具可以帮助用户处理和理解文本数据。它可以实现文本分类…

150W无感功率电阻器

特点:1x150 W/2x60 W/3x33 W功率 SOT-227模具封装两种不同的端子选项 可供选择良好的机械可靠性 无感设计 电阻值:0.5Ω≤ 1MΩ 耐抗精度:1%- 10 % 温度系数:50 ppm/℃- 250 ppm/℃(25℃-105℃) 额定功率:150W 70℃ bottom case tempe…

Thinkphp一文鸡富贵鸡玫瑰庄园富农场仿皮皮果理财农场源码

Thinkphp一文鸡富贵鸡玫瑰庄园富农场仿皮皮果理财农场源码,喜欢的朋友可以下载研究 一文鸡富贵鸡玫瑰庄园富农场仿皮皮果理财农场源码

8-1RT-Thread消息队列

8-1RT-Thread消息队列 消息队列又称队列,是一种常用于线程间通信的数据结构。 消息队列控制块里有两个链表,空闲列表用来挂接空的小几块,另一个链表是用来挂接存有消息的消息框。其中消息链表头指向消息队列当中的第一个消息框,而…

Python 制作词云图

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

LabVIEW处理大量数据时,怎样确保数据的准确性和完整性?

在LabVIEW处理中,确保大量数据的准确性和完整性至关重要。以下是详细的多角度分析和建议,以确保在LabVIEW中处理大量数据时,数据的准确性和完整性: 1. 数据采集阶段 1.1 高精度硬件选择 选择高精度的数据采集硬件,如…

C++设计模式---装饰器模式

1、介绍 装饰器(Decorator)模式是一种结构型设计模式,它允许你动态地给一个对象添加额外的职责。 装饰器模式主要用于扩展对象的功能,而又不改变其原有结构。在C中,装饰器模式主要应用于那些需要为对象动态添加功能或改…

STM32定时器输出pwm的几种模式

目录 定时器 输出脉冲模式: PWM模式(PWM Mode) 输出比较模式(Output Compare Mode) 总结 占空比: 输出比较模式与占空比 PWM模式与占空比 输出比较模式与PWM模式的结合 输出比较模式实例&#xf…

C++ Primer Plus第五版笔记(p201-250)

第六章 函数(下) 在含有return语句的循环后面应该也有一条return语句 不要返回局部对象的引用或指针,当函数结束时临时对象占用的空间也就随之释放掉了,所以两条return语句都指向了不再可用的内存空间。 如果函数返回指针、引用…

甲板上的战舰|模拟?|每日一题|chatgpt结合更正

文章目录 我的天免费的4o太好用了我的天免费的4o太好用了我的天免费的4o太好用了题目详情思路:关键:chatGPT配合纠正错误思路正确代码: 我的天免费的4o太好用了 我的天免费的4o太好用了 我的天免费的4o太好用了 重要的事情说三遍 题目详情…

螺栓拧紧力矩标准

据德国VOITH提供Nm换算所得 螺栓扭矩表 (单位:Nm、Kgm) Nm0.101972mKg M6~M24螺钉或螺母的拧紧力矩操作者参考 ★对于设计图纸有明确力矩要求的;应按图纸要求执行… 套管螺母紧固力矩Q/STB B07833-1998 材料 HPb63-3Y2 直通式压注油杯 Q/STB B07020-1998螺纹M6、…

CD工具AWX之作业模板与工作流模板

一、概要 本文以php和h5项目为示例,讲述从初始化项目到更新发布的实现详情。 它们跟java/go等进程程序不同,只需要下发.php等静态文件即可,不涉及进程的重启。 对于php项目,除了php文件外,还包括.env配置文件。&…

【C++】STL空间配置器

STL空间配置器 一、什么是空间配置器二、为什么需要空间配置器三、SGI-STL空间配置器实现原理1、 一级空间配置器2、二级空间配置器 四、优缺点分析 一、什么是空间配置器 STL 有六大组件分别是:容器,算法,迭代器, 空间配置器&am…

【最新鸿蒙应用开发】——类Web开发范式2——前端语法

兼容JS的类Web开发范式 JS FA应用的JS模块(entry/src/main/js/module)的典型开发目录结构如下: 1. 项目基本结构 1.1. 目录结构 1.2. 项目文件分类如下: .hml结尾的HML模板文件,这个文件用来描述当前页面的文件布局结构。 .css结尾的CSS样…

Wall国内开源程序照片墙,支持VR全景及安装教程

下载 GitHub官网:https://github.com/zhang-tong-yao/wall 软件下载:https://github.com/zhang-tong-yao/wall/releases,推荐下载最新的版本。 演示效果 目前支持PC端和移动端自适应。 演示地址:https://demo-wall.ityao.cn …