初识Tkinter弹窗

news2024/12/25 13:01:02

Tkinter弹窗

Tkinter是什么


Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口。作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。

对于稍有GUI编程经验的人来说,Python的Tkinter界面库是非常简单的。python的GUI库非常多,选择Tkinter,一是最为简单,二是自带库,不需下载安装,随时使用,三则是从需求出发,Python作为一种脚本语言,一种胶水语言,一般不会用它来开发复杂的桌面应用,它并不具备这方面的优势,使用Python,可以把它作为一个灵活的工具,而不是作为主要开发语言,那么在工作中,需要制作一个小工具,肯定是需要有界面的,不仅自己用,也能分享别人使用,在这种需求下,Tkinter是足够胜任的!

这篇文章主要做一个简单概述和实践编程,对于从没有接触过GUI的新手,在脑中树立一个基本的界面编程概念,同时自己也能学会如何简单的实现一些小的图形窗口功能。

对于Tkinter编程,可以用两个比喻来理解:

第一个,作画。我们都见过美术生写生的情景,先支一个画架,放上画板,蒙上画布,构思内容,用铅笔画草图,组织结构和比例,调色板调色,最后画笔勾勒。相应的,对应到tkinter编程,那么我们的显示屏就是支起来的画架,根窗体就是画板,在tkinter中则是Toplevel,画布就是tkinter中的容器(Frame),画板上可以放很多张画布(Convas),tkinter中的容器中也可以放很多个容器,绘画中的构图布局则是tkinter中的布局管理器(几何管理器),绘画的内容就是tkinter中的一个个小组件,一幅画由许多元素构成,而我们的GUI界面,就是有一个个组件拼装起来的,它们就是widget。

Tkinter 控件详细介绍

1. Tkinter 模块元素简要说明

tkinter类元素简要说明
Button按钮类似标签,但提供额外的功能,点击时执行一个动作,例如鼠标掠过、按下、释放以及键盘操作/事件
Canvas画布提供绘图功能(直线、椭圆、多边形、矩形)可以包含图形或位图
Checkbutton复选框允许用户选择或反选一个选项,一组方框,可以选择其中的任意个(类似HTML 中的checkbox)
Entry单行文本框单行文字域,显示一行文本,用来收集键盘输入(类似HTML中的 text)
Frame框架用来承载放置其他GUI元素,就是一个容器
Label标签用于显示不可编辑的文本或图标
LabelFrame容器控件是一个简单的容器控件。常用与复杂的窗口布局
Listbox列表框—个选项列表,用户可以从中选择
Menu菜单点下菜单按钮后弹出的一个选项列表,用户可以从中选择
Menubutton菜单按钮用来包含菜单的组件(有下拉式、层叠式等等)
Message消息框类似于标签,但可以显示多行文本
OptionMenu选择菜单下拉菜单的一个改版,弥补了Listbox无法下拉列表框的遗憾
PanedWindow窗口布局管理是一个窗口布局管理的插件,可以包含—个或者多个子控件。
Radiobuttion单选框允许用户从多个选项中选取一个,一组按钮,其中只有一个可被“按下”(类似HTML 中的radio)
Scale进度条线性“滑块”组件,可设定起始值和结束值,会显示当前位置的精确值
Scrollbar滚动条对其支持的组件(文本域、画布、列表框、文本框)提供滚动功能
Spinbox输入控件与Entry类似,但是可以指定输入范围值
Text多行文本框多行文字区域,显示多行文本,可用来收集(或显示)用户输入的文字(类似HTML 中的textarea)
Toplevel顶层类似框架,为其他的控件提供单独的容明
messageBox消息框用于显示你应用程序的消息框。(Python2中为tkiMessagebox)

1. 创建主窗口及Label部件(标签)创建使用

我们要学习使用上面提到的这些控件首先要创建一个主窗口,就像作画一样,先要架好架子和画板,然后才能在上面放画纸和各种绘画元素,创建好主窗口才能在上面放置各种控件元素。而创建过程是很简单的,如下:

示例代码:

# -*- coding: utf-8 -*-
import tkinter as tk  # 使用Tkinter前需要先导入

# 第1步,实例化object,建立窗口window
window = tk.Tk()
# 第2步,给窗口的可视化起名字
window.title("My window ")
# 第3步,设定窗口的大小(长*宽)
window.geometry('500x380')  # 这里的乘是小x
# 第4步,在图形界面上设定标签
l = tk.Label(window, text='你好 ! this is Tkinter ', bg='green', font=('Arial', 12), width=30, height=2)
# 说明: bg为背景,font为字体,width为长,height为高,这里的长和高是字符的长和高,比如height=2,就是标签有2个字符这么高
# 第5步,放置标签
l.pack()
# Label内容content区域放置位置,自动调节尺寸
# #放置label的方法有:1) l.pack(); 2)1.place();
# 第6步,主窗口循环显示
window.mainloop()
# 注意,loop因为是循环的意思, window.mainloop就会window不断的刷新,如果没有mainloop,就是一个静态的window,
# 传入进去的值就不会有循环,mainloop就相当于一个很大的while循环,有个while,每点击一次就会更新一次,所以我们必须要有循环
# #所有的窗口文件都必须有类似的mainloop函数,mainloop是窗口文件的关键的关键。

结果:
在这里插入图片描述

2. Button窗口部件


简单说明:

Button(按钮)部件是一个标准的Tkinter窗口部件,用来实现各种按钮。按钮能够包含文本或图象,并且你能够将按钮与一个Python函数或方法相关联。当这个按钮被按下时,Tkinter自动调用相关联的函数或方法。

按钮仅能显示一种字体,但是这个文本可以跨行。另外,这个文本中的一个字母可以有下划线,例如标明一个快捷键。默认情况,Tab键用于将焦点移动到一个按钮部件。

什么时候用按钮部件

简言之,按钮部件用来让用户说“马上给我执行这个任务”,通常我们用显示在按钮上的文本或图象来提示。按钮通常用在工具条中或应用程序窗口中,并且用来接收或忽略输入在对话框中的数据。关于按钮和输入的数据的配合,可以参看Checkbutton和Radiobutton部件。

如何创建:

普通的按钮很容易被创建,仅仅指定按钮的内容(文本、位图、图象)和一个当按钮被按下时的回调函数即可:

b = tk.Button(window, text=“hit me”, command=hit_me)

没有回调函数的按钮是没有用的,当你按下这个按钮时它什么也不做。你可能在开发一个应用程序的时候想实现这种按钮,比如为了不干扰你的beta版的测试者:

b = tk.Button(window, text=“Help”, command=DISABLED)

# -*- coding: utf-8 -*-
import tkinter as tk  # 使用Tkinter前需要先导入

# 第1步,实例化object,建立窗口window
window = tk.Tk()
# 第2步,给窗口的可视化起名字
window.title("My window ")
# 第3步,设定窗口的大小(长*宽)
window.geometry('500x380')  # 这里的乘是小x
# 第4步,在图形界面上设定标签
var = tk.StringVar()  # 将1abel标签的内容设置为字符类型,用var来接收hit_me函数的传出内容用以显示在标签上
l = tk.Label(window, textvariable=var, bg='green', font=('Arial', 12), width=30, height=2)
# 说明: bg为背景,font为字体,width为长,height为高,这里的长和高是字符的长和高,比如height=2,就是标签有2个字符这么高
# 第5步,放置标签
l.pack()
# 定义一个函数功能(内容自己自由编写)﹐供点击Button按键时调用,调用命令参数command=函数名
on_hit = False
def hit_me():
    global on_hit
    if on_hit == False:
        on_hit = True
        var.set(" you hit me ")
    else:
        on_hit = False
        var.set('')


# 第5步,在窗口界面设置放置Button按键
b = tk.Button(window, text='hit_me', font=('Arial', 12), width=10, height=1, command=hit_me)
b.pack()
# 第6步,主窗口循环显示
window.mainloop()

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

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

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

相关文章

【蓝桥杯省赛真题17】python删除字符串 青少年组蓝桥杯python编程省赛真题解析

目录 python删除字符串 一、题目要求 1、编程实现 2、输入输出 二、解题思路

Qt创建SDK库(dll动态库)并调用SDK库(dll动态库)

Qt创建SDK库(dll动态库)并调用SDK库(dll动态库) 一、项目场景 在日常的项目中,我们经常会遇到调用别人的数学库、线程库、图形库等操作。这些库通常就被称为SDK,SDK全称是Software Development Kit(软件开发工具包),…

【C++ 五】结构体

结构体 文章目录 结构体前言1 结构体基本概念2 结构体定义和使用3 结构体数组4 结构体指针5 结构体嵌套结构体6 结构体做函数参数7 结构体中 const 使用场景8 结构体案例8.1 案例一8.2 案例二 总结 前言 本文包含结构体基本概念、结构体定义和使用、结构体数组、结构体指针、结…

gitlab CI CD基础概念

gitlab CI CD基础概念 本文目录 gitlab CI CD基础概念基础概念Pipelines:流水线JobsStage .gitlab-ci.yml使用模式1:官网gitlab 本地gitlab runner使用模式2:docker gitlab docker gitlab runner 基础概念 开发模式转变:瀑布模…

【MySQL】(5)聚合函数

文章目录 聚合函数COUNT 函数SUM 函数AVG 函数MAX 函数 MIN 函数 group by 子句简介示例:scott 数据库单列分组多列分组 having 子句总结 聚合函数 在 MySQL 中,聚合函数是用于计算多行数据的统计信息的函数,例如总和、平均值、最大值、最小…

图扑数字孪生工厂合集 | 智慧工厂可视化,推动行业数字化转型

前言 图扑软件基于 HTML5(Canvas/WebGL/WebVR)标准的 Web 技术,满足了工业物联网跨平台云端化部署实施的需求,以低代码的形式自由构建三维数字孪生、大屏可视化、工业组态等等。从 SDK 组件库,到 2D 和 3D 编辑&#…

LeetCode算法小抄--花式遍历二叉树

LeetCode算法小抄--花式遍历二叉树花式遍历二叉树翻转二叉树[226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/)填充节点的右侧指针[116. 填充每个节点的下一个右侧节点指针](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/)将…

OpenCV实例(一)人脸检测

OpenCV实例(一)人脸检测 1.人脸检测和识别概述2.使用OpenCV进行人脸检测2.1静态图像中的人脸检测2.2视频中的人脸检测 作者:Xiou 1.人脸检测和识别概述 计算机视觉使很多任务成为现实,其中两项任务就是人脸检测(在图…

psql Centos7安装postgresql-12

之前在centos7上下的postgresql,它的数据库实例在 “var/lib/pgsql/” 下。这就导致了系统用户的"postgres"的家目录跟postgresql数据库目录不在同一目录下。因此,今天趁着有闲暇时间把数据库装到"postgres"目录下,顺便把…

罗丹明荧光染料标记叶酸,FA-PEG2000-RB,叶酸-聚乙二醇-罗丹明; Folic acid-PEG-RB

FA-PEG-RB,叶酸-聚乙二醇-罗丹明 中文名称:叶酸-聚乙二醇-罗丹明 英文名称:FA-PEG-RB, Folic acid-PEG-RB 性状:粉红色固体或液体,取决于分子量 溶剂:溶于水和DMSO、DMF等常规性有机溶剂 保存条件:-2…

学习系统编程No.17【vscode实战】

引言: 北京时间:2023/4/11/7:25,昨天11点洗澡,洗完直接睡,导致现在头发愈发不能看,So,平头时刻将要来临,头发太长真的很不方便,昨天已经更文啦!这个星期一定…

miss_01(简单密码学及音频隐写)

下载附件,解压时提示输入密码 使用010editor打开,发现deFlags值被修改 (如果frFlags 或者 deFlags 的值不为0就会导致zip的伪加密) 将deFlags的值修改为0,并将文件另存为1.zip 再次打开,没有密码提示了 打…

酒吧攻略:一文解读酒吧类型

目前主流酒吧类型可以大致分为以下几类: 夜店:(NIGHT CLUB):KTV,夜总会,酒吧等总称club,主要指的就是夜店。 Bar:多指娱乐休闲类的酒吧,提供现场的乐队或歌…

UG导出点集坐标到txt文本文档中

文章目录 前言一、下载文件二、使用步骤1.运行Grip程序2.选择下载的points-file.grx文件3.选择要导出的文本文档的位置4.选择想要导出的点集5.查看文件 参考 前言 将UG中的离散的点或者点集坐标导出到文本文档; 原文地址 俩文件链接如下,失效了可以私信…

客快物流大数据项目(一百一十四):负载均衡 Spring Cloud Ribbon

文章目录 负载均衡 Spring Cloud Ribbon 一、Ribbon 简介 二、负载均衡源码跟踪探究 负载均衡 Spring Cloud Ribbon 为了增加服务并发访问量,我们搭建集群,集群的负载均衡怎么实现?

OpenAI-ChatGPT最新官方接口《速率并发限制》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(八)(附源码)

Rate limits 速率并发限制前言Introduction 导言What are rate limits? 什么是速率限制?Why do we have rate limits? 为什么我们有速率限制?What are the rate limits for our API? 我们API的速率限制是什么?GPT-4 rate limits GPT-4速率…

【JavaEE】Spring + IoC + DI

目录 Spring概念 IoC DI Spring概念 Spring是包含众多工具方法的IoC容器。 IoC IoC:Inversion of Control 控制权反转 它是一种思想,是面向对象的一种设计原则。这种思想为了实现类与类之间的解耦。 比如当一个对象要使用另一个对象时,不再…

IO流相关知识

IO流 1.文件 保存数据的地方 2.文件流 文件在程序中以流的形式来操作的 流:数据在数据源(文件)和程序(内存)之间的经历的路程 输入流:数据从数据源(文件)到程序(内存…

【FPGA-DSP】第五期:FFT调用流程

目录 1. matlab输入信号编写 2. Simulink开发 2.1 模块搭建 2.2 Simulink运行 2.3 matlab信号处理 拓:输入信号位数改变 本章节主要说明如何在system generator中使用fft模块,话不多说,看操作: 参考教程第5期 - FFT调用流…

PyQt PyQt5 Python VTK Gui Actor 选中 高亮显示 actor

前言: 本文主要介绍了如何使用Python VTK高亮显示actor,使用Python语言,高亮显示选中的actor。当窗口中的圆球actor被选中时,会变成红色,并且会显示actor三遍面片边缘信息。 效果: VTK VTK,&…