GUI的最终选择:Tkinter

news2025/1/18 8:51:52

Tkinter是Python默认的GUI库,因此使用时直接导入即可:import tkinter

17.1 Tkinter之初体验

 

代码分析:

tkinter.mainloop()通常是程序的最后一行代码,执行后程序进入主事件循环。

17.2 进阶版本 

将代码封装成类:

运行效果:

代码分析:

 注:修改pack()方法的side参数side参数可以设置为LEFT、RIGHT、TOP和BOTTOM四个方位,默认的设置时side=tkinter.TOP.

还可以设置pack()方法的padx和pady参数自定义按钮的偏移位置。

17.3 Label组件

Lable组件是用于在界面上输出描述的标签。

有时候可能需要将图片和文字分开,例如将图片作为背景,文字显示再图片的上面,只需要设置compound选项即可:

17.4 Button组件

Button组件用于实现一个按钮,它的绝大多数选项与Label组件是一样的。不过Button组件有一个Label组件实现不了的功能,那就是可以接收用户的信息。

Button组件有一个command选项,用于指定一个函数或方向,当用户单击按钮时,Tkinter就会自动调用这个函数或方法了。

17.5 Checkbutton组件

Checkbutton组件就是常见的多选按钮,而Radiobutton则是单选按钮。

 

17.6 Radiobutton组件

Radiobutton组件与Checkbutton组件用法基本一致,唯一不同的是Radiobutton实现的是“单选”的效果。

要实现这种互斥的效果,同一组内的所有Radiobutton只能共享一个variable选项,并且需要设置不同的value选项值:

17.7 LabelFrame组件

LabelFrame组件是Frame框架的进化版,从样式上来看,也就是添加了Label的Frame,但有了它,Checkbutton和Radiobutton的组件分组就变得简单了:

17.8 Entry组件

Entry组件就是平时所说的输入框。输入框是与程序打交道的一个途径,例如程序要求输入账号密码,那么就需要提供两个输入框,用于接收密码的输入框还会用星号将实际输入的内容隐藏起来。

在输入框中用代码添加和删除内容,同样也是使用insert()和delete()方法:

 获取输入框里的内容,可以使用Entry组件的get()方法。

当然也可以将一个Tkinter的变量(通常是StringVar)挂钩到textvariable选项,然后通过变量get()方法获取。

在下面的例子中添加一个按钮,当单击按钮的时候,获取输入框中的内容并打印出来,然后清空输入框:

如果想设计一个密码输入框,即使用星号(*)代替用户输入的内容,只需要设置show选项即可:

另外,Entry组件还支持验证输入内容的合法性。例如输入框架要求输入的是数字,用户输入了字母那就属于“非法"。实现该功能,需要通过设置validate、validatecommand和invalidcommand三个选项。

首先,启用验证的”开关“是validate选项,该选项可以设置的值:

其次是为valideatecommand选项提供一个验证函数,该函数只能返回True或False表示验证结果。一般情况下验证函数只需要知道输入框的内容即可,可以通过Entry组件的get()方法获得该字符串。

最后 ,invalidcommand选项指定的函数只有在validatecommand的返回值为False的时候才被调用。

在下面的例子中,在第一个输入框输入”小鱿鱼“,并通过Tab键将焦点转移到第二个输入框,validatecommand指定的验证函数被触发并返回False,接着invalidcommand被触发:

其实,Tkinter还有一个隐藏功能,即Tkinter为验证函数提供一些额外的选项,

17.12 Text组件 

Text组件用于显示和处理多行文本。当创建一个Text组件时,它里面是没有内容的,为了给其插入内容,可以使用Insert()方法以及INSERT或END索引号:

Text组件不仅支持插入和编辑文本,还支持插入image对象和window组件:

下面将实现单机一下按钮显示一张图片的功能:

17.12.1 Indexes用法

Indexes用来指向text组件中文本的位置,与python的序列索引一样,Text组件索引也对应实际字符的位置。 

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

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

相关文章

电子商务人工智能指南 3/6 - 聊天机器人和客户服务

介绍 81% 的零售业高管表示, AI 至少在其组织中发挥了中等至完全的作用。然而,78% 的受访零售业高管表示,很难跟上不断发展的 AI 格局。 近年来,电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…

嵌入式软件C语言面试常见问题及答案解析(一)

本文中题目列表 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)2. 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。3. 预处理器标识#error的目的是什么?4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?5. …

从失败中学习:如何将错误转化为学习机会

失败是人生的一部分,无论是在个人生活还是职业生涯中,我们都难免会遇到挫折和错误。然而,失败并不意味着终结,而是一个潜在的学习机会。通过正确的态度和方法,我们可以从失败中汲取经验,转化为成长的动力。…

HarmonyOS NEXT的Navigation,跳转子页面后底部Tab不隐藏问题解决

问题复现 一直以来,首页的Tabs是这么用的: import Home from "../pages/home/Home" import ZhiHu from "../pages/song/Song" import Mine from "../pages/mine/Mine"Entry Component struct Index {State currentIndex…

基础排序算法详解:冒泡排序、选择排序与插入排序

引言 上一章,我们聊到了排序的基本概念和常见算法的分类。这一次,我们从基础开始,深入剖析三种常见的O(n) 排序算法:冒泡排序、选择排序 和 插入排序。 它们是学习排序算法的入门神器,不仅实现简单,还能帮…

番茄钟与Todo List:用Go构建高效的时间管理工具

引言 在当今快节奏的世界中,时间管理和任务组织变得越来越重要。为了帮助用户提高效率,我开发了一个基于Golang的开源项目,基于fyne的ui,它结合了经典的番茄工作法(Pomodoro Technique)和功能丰富的待办事…

Python-标识符、隐式转换和显式转换

记录python学习,直到学会基本的爬虫,使用python搭建接口自动化测试就算学会了,在进阶webui自动化,app自动化 python基础1 标识符约定动态语言和静态语言隐式转换和显式转换隐式转换显式转换 实践是检验真理的唯一标准 标识符约定…

【全网最新】使用 1panel面板 部署若依系统( springboot 和 vue)项目

​​​​​​使用 1panel面板 部署 springboot 和 vue_1panel部署vue项目-CSDN博客 准备工作: 准备好的网站后台代码文件准备好的网站前端页面安装好1panel1panel中安装好mysql1panel中安装好redis1panel中安装好Openresty部署后台接口 在application.yml中修改后台端口,这里…

力扣Hot100刷题日常(链表篇上)

相交链表 题目分析: 暴力解法: 计算链表的长度: 首先我们需要知道链表 A 和链表 B 的长度。因为在开始比较两个链表是否相交之前,我们需要确保它们有相同的起始点。从长度上来说,两个链表的交点一定会出现在它们后续部…

MySQL数据库安全与管理

1、创建两个新用户U_student1和U_student2,密码分别为1234和5678 create user U_student1@localhost identified by 1234, U_student2@localhost identified by 5678; 2、创建两个新用户的详细信息保存在MySQL数据库的user表中 use mysql; select user, host, authentication…

【数据库】关系代数和SQL语句

一 对于教学数据库的三个基本表 学生S(S#,SNAME,AGE,SEX) 学习SC(S#,C#,GRADE) 课程(C#,CNAME,TEACHER) (1)试用关系代数表达式和SQL语句表示:检索WANG同学不学的课程号 select C# from C where C# not in(select C# from SCwhere S# in…

在做题中学习(79):最小K个数

解法:快速选择算法 说明:堆排序也是经典解决问题的算法,但时间复杂度为:O(NlogK),K为k个元素 而将要介绍的快速选择算法的时间复杂度为: O(N) 先看我的前两篇文章,分别学习:数组分三块&#…

uniapp页面不跳转问题!(使用uni.$u.route或者原生uni.navigateTo)页面跳转ios无效果(既不报错也不跳转页面)

1.问题描述: 通常使用点击事件来触发页面跳转都没问题,但是现在业务需求,在一个方法中自动去携带参数跳转到另外一个页面,android真机无问题,就ios一直无法跳转过去! 2.解决方法: 2.1 必须使用setTimeout来延迟跳转 2.2 setTimeout的延迟时间必须要大于300 不要问为什么…

基于 Spring Boot + Vue 的宠物领养系统设计与实现

引言 近年来,随着人们生活水平的提高,宠物逐渐成为许多家庭的重要成员。然而,宠物的流浪和弃养问题日益严重,这促使社会对宠物领养的需求不断增长。为解决宠物领养中信息不对称、领养流程复杂等问题,设计并实现一个基…

设计模式学习[10]---迪米特法则+外观模式

文章目录 前言1. 迪米特法则2. 外观模式2.1 原理阐述2.2 举例说明 总结 前言 之前有写到过 依赖倒置原则,这篇博客中涉及到的迪米特法则和外观模式更像是这个依赖倒置原则的一个拓展。 设计模式的原则嘛,总归还是高内聚低耦合,下面就来阐述…

GDPU Android移动应用 访问网络

接到网络,开启你的访问之旅。 WebView的简单使用 WebView的简单使用,创建一个部件,上面一个button,下面一个webview布满整个屏幕,设置Web View的属性,使其可以执行Javascript(自己尝试设置其他属性&#xf…

【burp】burpsuite基础(八)

Burp Suite基础(八) 声明:该笔记为up主 泷羽的课程笔记,本节链接指路。 警告:本教程仅作学习用途,若有用于非法行为的,概不负责。 ip伪装 安装组件jython 下载好后,在burp中打开扩展…

使用 EasyExcel 提升 Excel 处理效率

目录 前言1. EasyExcel 的优点2. EasyExcel 的功能3. 在项目中使用 EasyExcel3.1 引入依赖3.2 实体类的定义与注解3.3 工具类方法的实现3.4 在 Controller 中使用 4. 总结5. 参考地址 前言 在日常开发中,Excel 文件的处理是不可避免的一项任务,特别是在…

Liunx 中篇

3.4 打包压缩命令 3.5 文本编辑命令 文本编辑的命令,主要包含两个: vi 和 vim,两个命令的用法 类似,我们课程中主要讲解vim的使用。 3.5.1 vi和vim介绍 作用: vi命令是Linux系统提供的一个文本编辑工具,可以对文 件内容进行编辑…

kali Linux 安装配置教程(图文详解)

目录 一、下载安装VMware二、下载kali镜像三、安装kali到虚拟机 一、下载安装VMware 点我查看 二、下载kali镜像 官网下载:https://www.kali.org/get-kali/#kali-platforms 演示下载的为下图左边的,实际我们直接下载右侧虚拟机的直接使用就行 右侧下…