Tkinter 转载 (来自C语言中文网)

news2024/11/13 9:31:54

 

一个最简单的Tkinter程序至少应包含以下4个部分:

导入tkinter模块、创建主窗口、也称root窗口(即根窗口)、添加人机交互控件,同时编写相应的事件函数、通过主循环(mainloop)来显示主窗口。

以上:只有“添加人机交互控件”这个步骤属于Tkinter编程的重点,其余三个步骤属于固定的代码格式,如下:

92ddb12b344e4eac814d07e405c87286.png

程序运行结果:

4b81d6f9f1c545f5a383c3944eca3ab1.png

如上图,这个是最简单的GUI程序对应的主窗口,其他的控件都要建立在主窗口之上。

 

添加一些简单的交互控件(Eg:文本or按钮),代码如下所示:

58e400c63fda490b8e3feebf8df95577.png

程序运行结果如下:

877a9682533e4217a685a3608155fa59.png

以上程序中,添加了一行文本“C语言中文网,欢迎您。”此处使用了Lable控件来实现,需要注意的是,当成功创建标签(文本)对象后,必须使用pack方法将其放置在主窗口内(pack方法又称窗口布局管理器)。

 

添加按钮的逻辑与添加文本标签类似,值得注意的是,按钮控件通过command参数实现“关闭窗口”功能,代码如下:

649f9bf0249a417f888262c19849e5e1.png

设置宽高时,只能使用“x”不能使用“*”

20f597dd60c1404e9d92240942308b6c.png

Protocol协议处理机制:

Tkinter除了提供事件绑定机制之外,还提供了协议处理机制,它指的是应用程序和窗口管理器之间的交互,最常用的协议为WM_DELETE_WINDOW,当Tkinter使用WM_DELETE_WINDOW协议与主窗口进行交互时,Tkinter主窗口右上角x号的关闭功能失效,也就是无法通过点击x来关闭窗口,而是转变成调用用户自定义的函数。

a38a9e6316a04574a234172890d5320b.png

设置窗的位置:

当我们运行Tkinter程序时,主窗口都会出现在距离屏幕左上角指定的位置上,这是由Tkinter软件包默认设置的。但在许多情况下,我们需要根据实际情况来移动窗口再电脑屏幕上的位置,通过窗口对象geometry()方法即可改变主窗口的位置,语法格式如下:

37208a6ea080430c802474ebd7456cfb.png

 

上述代码表示,设置主窗口的宽度为 450,高度为 400,同时窗口距离左边屏幕的距离为 300(以像素为单位),距离屏幕顶部的距离为 200,这里我们将带“+”的参数值称为“位置参数”,当然,您也可以将它们设置为负数,如下所示:

6dc8d5b0c045487c95849683a380573d.png

当设置了一个超过屏幕的负参数值时,主窗口会被移动至“屏幕之外”,此时就看不到主窗口了,这也是隐藏窗口的一种方法。

 

Label控件构成:

一个控件主要由背景和前景两部分组成。其中背景由三部分构成分别是内容区域、填充区、边框,这三个区域的大小通过以下属性进行控制,如下所示:width/height、padx/pady、borderwidth

72302eb5b83c49f0a235f53ae5cf6121.png

边框的宽度可以通过 borderwidth 来调整,其样式可以通过relief来设置(默认为平的 flat);填充区的大小调整分为水平方向和垂直方向,可以使用padx和pady来调整;内容区则主要用来显示文字或者图片,其大小由 width/height 来控制。

03590cf3c84046d19de1855728556a13.png

 标签添加背景图

Label(标签)除了可以显示文本之外,还可以用来显示图片,通过一组示例做简单的说明,代码如下所示:

32c4f19560e6405496150558c7a7f1e3.png

注意:不同的 TK 版本所支持的图片格式也不完全相同,通过对上述示例的测试,此处只支持显示 GIF 格式的图片。

 

按钮控件Button的使用流程:通过command参数回调函数。自定义一个函数或者方法,将函数与按钮关联起来,最后当用户按下这个按钮时,Tkinter就会自动调用相关函数。

使用流程:

fe8551903c93456cb161199311ed6a2c.png

扩展:按钮的布局

按钮在主窗口中的布局,通常使用grid()函数来完成,该函数以网络状的形式(行和列)来管理窗口布局。

grid() 布局管理器提供了一个sticky参数,通过该参数可以设置按钮的方位,该参数默认将控件设置居中,其他参数值有 N/S/W/E(上/下/左/右),而且可以组合在一起使用,比如 NW/WE/SE/SW/NE 等,这与anchor参数控制文本的显示位置,有着异曲同工之妙。如下图所示:

093b627398e047af8e574cfc2fcbd435.png

值得大家注意的是: grid() 布局方法不能与 pack() 混合在一起使用,相关知识在后续内容中还会做针对性讲解。

 

6e0c7890ea4a431293a02ade59a133f5.png

 

 

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

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

相关文章

[Git] fatal: the remote end hung up unexpectedly

1 问题介绍 在使用Git进行代码管理和版本控制的过程中,许多开发者可能会遇到这样一个错误提示:fatal: the remote end hung up unexpectedly。这是一种常见的错误,通常出现在将本地代码推送(push)到远程仓库&#xff…

新加坡物理服务器详细测评数据

新加坡物理服务器因其地理位置优越、网络连接质量高以及数据中心设施完善等因素,成为了许多企业和个人选择托管其业务的理想之地。以下是对新加坡物理服务器的一些详细测评数据的科普文,旨在帮助读者更好地了解这类服务器的性能和特点。 新加坡物理服务器…

智能制造与工业物联网CC2530——串口通讯、定时器唤醒

一、项目目的: 1.1 任务1:ZigBee 模块串口通信 任务背景: 熟悉 ZigBee 模块的硬件接口是使用该技术的基础。通过学习如何利用 IAR 开发环境设计程序,可以实现 CC2530 与 PC 机终端之间的串口通信,从而更好地理解和应用…

中断、异常

文章目录 概念CPU怎么直到中断/异常跳过来执行哪一个函数呢?LR 中断硬件框架:对于F103这块芯片,如果要PA0发出中断,那要做的操作有?GPIO中断编程具体代码 概念 中断属于一种异常 保存现场、处理异常(中断…

C# 植物大战僵尸---杂交版

开发框架:.Net Fra,ework4.0 游戏名称:植物大战僵尸-杂交版 游戏介绍:植物大战僵尸-杂交版是一款结合了经典塔防游戏《植物大战僵尸》的元素和创新杂交机制的游戏。玩家需要种植各种植或英雄物来抵御一波又一波的僵尸入侵。游戏的特色在于各…

迅为RK3588开发板可以实现双屏同显、双屏异显、三屏同显、三屏异显、标异屏切换

RK3588可以实现双屏同显、双屏异显、三屏同显、三屏异显、标异屏切换这主要取决于RK3588芯片内置了VOP控制器,支持三路视频同时输出可有效提高行业定制的拓展性。

《码农职场》(IT人求职就业手册)导读和理性书评

《码农职场》是为IT行业求职者量身定制的一本实用指南,涵盖了从求职准备到成功就业的全方位内容。书中分为“职前调整”和“就业指南”两大部分,每一部分都详尽地介绍了求职过程中的各个关键环节,旨在帮助求职者在竞争激烈的职场中脱颖而出。…

锡废水再生回收的回收处理

锡废水再生回收是一个涉及环境保护和资源再利用的重要过程,主要目的是从含有锡的废水中提取有价值的锡资源,同时减少环境污染。以下是对锡废水再生回收的详细解析: 一、锡废水再生回收的重要性 环境保护:回收废水中的锡可以减少对…

C# Null 合并运算符 ??

int? 在 C# 中,int? 是一个可空的 int 类型,它能够存储一个 32 位带符号整数或者 null 值。当你声明一个 int? 类型的变量并将其初始化为 null,你实际上是在创建一个可以容纳整数值的变量,但是初始时并没有赋予它任…

C++转Java基础知识

目录 1. Java基础知识 1.1 JDK和JVM 1.2 Java基础代码演示 1.3 Java中的注释 1.4 Java中的关键字 1.5 Java中的println和print的区别 2. Java中的数据类型 2.1 常量 2.2 标识符 2.3 变量 2.4 类型转换 2.5 自动类型转换 2.6 强制类型转换 3. 运算符 3.1 自增运算…

彻底删除和安装docker和docker-compose

一、Docker安装和卸载 1.1 离线安装docker 1.1.1 下载docker安装包 1.1.2 上传docker到服务器目录/opt/ 1.1.3 解压docker-19.03.9.tgz 进入opt目录解压docker-19.03.9.tgz 1.1.4 解压的docker文件夹全部移动至/usr/bin目录 1.1.5 将docker注册为系统服务 在/usr/lib/syst…

C++——多态经典案例(一)组装电脑

案例:小明打算买两台组装电脑,假设电脑零部件包括CPU、GPU和内存组成。 一台电脑使用intel的CPU、GPU和内存条 一台电脑使用Huawei的CPU、GPU和Intel的内存条 分析:使用多态进行实现 将CPU、GPU和内存条定义为抽象类,内部分别定义…

【LeetCode刷题笔记】LCR.27 回文链表

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…

平价蓝牙耳机哪款具有超高的性价比?四个评分超高的爆款推荐!

随着现代人对蓝牙耳机的需求越来越大&#xff0c;是不是每次看到琳琅满目的蓝牙耳机都眼花缭乱的&#xff0c;特别是预算有限还要追求音质与耐用的小伙伴&#xff0c;不知道平价蓝牙耳机哪款具有超高的性价比&#xff1f;别怕&#xff0c;今天我这个蓝牙耳机小达人就来给你们带…

简单猜谜小程序开发

了解小程序的结构 项目根目录 包含小程序的配置文件和其他资源。 页面目录 每个页面都有独立的目录&#xff0c;通常包含 .json、.wxml、.wxss、.js 文件&#xff1a; .json&#xff1a;页面配置文件&#xff0c;用于配置页面的窗口表现等。 .wxml&#xff1a;页面的布局文件…

ArcGIS for js 缓冲(vue项目)

示例&#xff1a; 一、页面布局 <template><div id"viewDiv"><div class"content"><el-button-group class"btnGroup"><el-button type"button" click"toolClick(point)" title"缓冲点&qu…

查询表信息时有一个数据为null相关解决

查询的时候varchar类型的username一直查不到为null,这个问题干了我好久 当时我以为是连接mysql数据库的时候没有在url后面添加添加指定字符的编码、解码格式的参数约束.然后经过分析发现 我创建的这个Account对象 直接上结果&#xff0c;问题出在了setUsername()方法上 错误…

ICM-20948芯片详解(7)

接前一篇文章&#xff1a;ICM-20948芯片详解&#xff08;6&#xff09; 五、组件概览及详述 再次给出ICM-20948芯片的内部结构框图&#xff1a; 2. 组件详述 &#xff08;9&#xff09;传感器数据寄存器 传感器数据寄存器包含最新的陀螺仪、加速计、辅助传感器和温度测量数据…

Python获取Excel内容

Python获取Excel内容 目录 Python获取Excel内容1.读取Excel并登陆2.下载Excel中图片 数据存储到列表3.上传到接口 需求&#xff1a;获取xlsx files目录下的所有Excel信息&#xff0c;并将数据打包成字典格式上传到接口 示例数据&#xff1a; 1.读取Excel并登陆 import os impo…

只渲染阴影(blender的cycle渲染)

点击物体属性&#xff0c;visibility&#xff0c;mask的阴影收集器 shadow catcher 点出蒙版层 新建collection收集集合&#xff0c;点击蒙版让物体消失并挖洞&#xff0c;