tkinter比较常用的组件

2023-11-13

1.输入框组件

输入框(Entry)用来输入单行内容,可以方便地向程序传递用户参数。这里通过一个转换摄氏度和华氏度的小程序来演示该组件的使用。

import tkinter as tk
def btnHelloClicked():
    cd = float(entryCd.get())
    labelHello.config(text="%.2f°C = %.2f°F" % (cd, cd * 1.8 + 32))
root = tk.Tk()
root.title("Entry Test")
labelHello = tk.Label(root, text="Convert °C to °F...", height=5, width=20, fg="blue")
labelHello.pack()
entryCd = tk.Entry(root, text="0")
entryCd.pack()
btnCal = tk.Button(root, text="Calculate", command=btnHelloClicked)
btnCal.pack()
root.mainloop()
View Code

本例的代码从1.2.1中修改而来,并新建了一个Entry组件entryCd,text参数设置了输入框的默认值为“0”。当按钮按下后,通过entryCd.get()获取输入框中的文本内容,该内容为字符串类型,需要通过float()函数转换成数字,自后再进行换算并更新label显示内容。

表3 Entry组件常用参数

参数

描述

height

组件的高度(所占行数)

width

组件的宽度(所占字符个数)

fg

前景字体颜色

bg

背景颜色

show

将Entry框中的文本替换为指定字符,用于输入密码等,如设置 show="*"

state

设置组件状态,默认为normal,可设置为:disabled—禁用组件,readonly—只读

2.单选、复选框

单选框(Radiobutton)和复选框(Checkbutton)分别用于实现选项的单选和复选功能。本例中的代码实现了通过单选框、复选框设置文字样式的功能。

import tkinter as tk
def colorChecked():
    labelHello.config(fg=color.get())
def typeChecked():
    textType = typeBlod.get() + typeItalic.get()
    if textType == 1:
        labelHello.config(font=("Arial", 12, "bold"))
    elif textType == 2:
        labelHello.config(font=("Arial", 12, "italic"))
    elif textType == 3:
        labelHello.config(font=("Arial", 12, "bold italic"))
    else:
        labelHello.config(font=("Arial", 12))
root = tk.Tk()
root.title("Radio & Check Test")
labelHello = tk.Label(root, text="Check the format of text.", height=3, font=("Arial", 12))
labelHello.pack()
color = tk.StringVar()#定义一个字符串变量
tk.Radiobutton(root, text="Red", variable=color, value="red",
               command=colorChecked).pack(side=tk.LEFT)
tk.Radiobutton(root, text="Blue", variable=color, value="blue",
               command=colorChecked).pack(side=tk.LEFT)
tk.Radiobutton(root, text="Green", variable=color, value="green",
               command=colorChecked).pack(side=tk.LEFT)
typeBlod = tk.IntVar()#定义整型变量
typeItalic = tk.IntVar()#定义整型变量
tk.Checkbutton(root, text="Blod", variable=typeBlod, onvalue=1,
               offvalue=0, command=typeChecked).pack(side=tk.LEFT)
                #onvalue代表复选框选中时整型变量的值
tk.Checkbutton(root, text="Italic", variable=typeItalic, onvalue=2,
               offvalue=0, command=typeChecked).pack(side=tk.LEFT)
root.mainloop()
View Code

在代码中,文字的颜色通过Radiobutton来选择,同一时间只能选择一个颜色。在三个Red、Blue和Green三个单选框中,定义了同样的变量参数color,选择不同的单选框会为该变量赋予不同的字符串值,内容即为对应的颜色。

任何单选框被选中都会触发colorChecked()函数,将标签修改为对应单选框表示的颜色。

 

表4 Radiobutton组件常用参数

参数

描述

variable

单选框索引变量,通过变量的值确定哪个单选框被选中。一组单选框使用同一个索引变量

value

单选框选中时变量的值

command

单选框选中时执行的命令(函数)

 

 

文字的粗体、斜体样式则由复选框实现,分别定义了typeBlod和typeItalic变量来表示文字是否为粗体和斜体。

当某个复选框的状态改变时会触发typeChecked()函数。该函数负责判断当前那些复选框被选中,并将字体设置为对应的样式。

表5 Checkbutton组件常用参数

参数

描述

variable

复选框索引变量,通过变量的值确定哪些复选框被选中。每个复选框使用不同的变量,使复选框之间相互独立

onvalue

复选框选中(有效)时变量的值

offvalue

复选框未选中(无效)时变量的值

command

复选框选中时执行的命令(函数)

 

 

3.消息窗口

消息窗口(messagebox)用于弹出提示框向用户进行告警,或让用户选择下一步如何操作。消息框包括很多类型,常用的有info、warning、error、yeno、okcancel等,包含不同的图标、按钮以及弹出提示音。下面的代码演示了各消息框的运行效果,大家可以自己一一尝试。

import tkinter as tk
from tkinter import messagebox as msgbox
def btn1_clicked():
    msgbox.showinfo("Info", "从前慢!")
def btn2_clicked():
    msgbox.showwarning("Warning", "不要在月亮上喝酒!")
def btn3_clicked():
    msgbox.showerror("Error", "输入可能有错误!")
def btn4_clicked():
    msgbox.askquestion("Question", "你要吃香蕉还是苹果?")
def btn5_clicked():
    msgbox.askokcancel("OkCancel", "确定穿越到唐朝吗?")
def btn6_clicked():
    msgbox.askyesno("YesNo", "确定去买衣裳?")
def btn7_clicked():
    msgbox.askretrycancel("Retry", "别气馁,再来一次!")
root = tk.Tk()
root.title("消息框测试")
btn1 = tk.Button(root, text="showinfo", command=btn1_clicked)
btn1.pack(fill=tk.X)
btn2 = tk.Button(root, text="showwarning", command=btn2_clicked)
btn2.pack(fill=tk.X)
btn3 = tk.Button(root, text="showerror", command=btn3_clicked)
btn3.pack(fill=tk.X)
btn4 = tk.Button(root, text="askquestion", command=btn4_clicked)
btn4.pack(fill=tk.X)
btn5 = tk.Button(root, text="askokcancel", command=btn5_clicked)
btn5.pack(fill=tk.X)
btn6 = tk.Button(root, text="askyesno", command=btn6_clicked)
btn6.pack(fill=tk.X)
btn7 = tk.Button(root, text="askretrycancel", command=btn7_clicked)
btn7.pack(fill=tk.X)
root.mainloop()
View Code

4.绘图组件

绘图组件(Canvas)可以在GUI中实现2D图形的绘制,相当于画图板。组件内置了多种绘图函数,可以通过简单的2D坐标绘制直线、矩形、圆形、多边形等。本例代码演示了Canvas组件的绘图功能,更多的绘图函数可以查阅Canvas的参考页面。

import tkinter as tk
def drawCircle(self, x, y, r, **kwargs):
    return self.create_oval(x - r, y - r, x + r, y + r, **kwargs)
root = tk.Tk()
root.title("画布测试")
cvs = tk.Canvas(root, width=600, height=400)
cvs.pack()
cvs.create_line(50, 50, 50, 300)
cvs.create_line(100, 50, 200, 300, fill="red", dash=(4, 4), arrow=tk.LAST)
cvs.create_rectangle(200, 50, 400, 200, fill="blue")
cvs.create_oval(450, 50, 550, 200, fill="green")
drawCircle(cvs, 450, 300, 50, fill="red")
cvs.create_polygon(200, 250, 350, 250, 350, 350, 220, 300, fill="yellow")
root.mainloop()
View Code

绘图函数的参数都比较好理解,包括基本的坐标和颜色、线型等附加参数。

直线(line),即线段,通过两个端点定义。坐标顺序为x1、y1、x2、y2。

矩形(rectangle)通过对角线上的两个点来定义。

需要注意的是Canvas中没有画圆函数,这里通过绘制椭圆间接实现了绘制圆形的函数drawCircle()。椭圆(oval)是通过外切矩形的对角线两点来定义的。

5.hello tkinter

首先介绍一个tkinter的基本例子,在IDLE中新建hello_tkinter.py,代码如下:

import tkinter as tk
# 建立tkinter窗口,设置窗口标题
root = tk.Tk()
root.title("Hello Test")
# 在窗口中创建标签
labelHello = tk.Label(root, text="Hello Tkinter!")
labelHello.pack()
# 运行并显示窗口
root.mainloop()
View Code

表1 Label组件常用参数

参数

描述

height

组件的高度(所占行数)

width

组件的宽度(所占字符个数)

fg

前景字体颜色

bg

背景颜色

justify

多行文本的对齐方式,可选参数为: LEFT、 CENTER、RIGHT

padx

文本左右两侧的空格数(默认为1)

pady

文本上下两侧的空格数(默认为1)

 

6.按钮组件

按钮组件(Button)是tkinter最常用的图形组件之一,通过Button可以方便地与用户进行交互。下列代码实现了通过触发按钮事件(按下按钮)来执行指定操作(改变标签内容)的例子。

import tkinter as tk
def btnHelloClicked():
    labelHello.config(text="Hello tkinter!")
root = tk.Tk()
root.title("Button Test")
labelHello = tk.Label(root, text="Press the button...", height=5, width=20, fg="blue")
labelHello.pack()
btn = tk.Button(root, text="Hello", command=btnHelloClicked)
btn.pack()
root.mainloop()
View Code

代码中定义了btnHelloClicked()函数,并通过给Button的command属性赋值来指定按钮按下时执行btnHelloClicked()函数中的代码的功能。在该函数中,通过labelHello.config()更改了label的text参数,即更改了标签的文字内容。

 

表2 Button组件基本参数

参数

描述

height

组件的高度(所占行数)

width

组件的宽度(所占字符个数)

fg

前景字体颜色

bg

背景颜色

activebackground

按钮按下时的背景颜色

activeforeground

按钮按下时的前景颜色

justify

多行文本的对齐方式,可选参数为: LEFT、 CENTER、RIGHT

padx

文本左右两侧的空格数(默认为1)

pady

文本上下两侧的空格数(默认为1)

以上内容来自于:https://blog.csdn.net/wuxiushu/article/details/52516652

 

转载于:https://www.cnblogs.com/yibeimingyue/p/9395118.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tkinter比较常用的组件 的相关文章

随机推荐

  • STM32-USB之Buffer Description Table

    一 stm32的USB接口每个端点对应两个分组缓冲区 其地址与范围位于分组存储区 从STM32的数据手册中存储器映像 gt 寄存器组起始地址看到 注意地址范围大小为1024 APB1按32BIT对齐访问 但此SRAM是由256个16BIT字
  • gitlab CI/CD :创建一个复杂的pipeline流水线

    教程内容原文地址 Tutorial Create a complex pipeline 当前教程版本 16 1 文章目录 先决条件 创建一个项目来保存 Docusaurus 文件 创建初始CI CD的配置文件 添加一个job来构建站点 添加
  • msvcr110.dll丢失的解决方法?有哪些修复的方法?

    msvcr110 dll丢失要怎么办 相信很多人都遇到过这个dll文件丢失问题吧 突然电脑就弹出一个框框显示无法启动程序 那么遇到这种问题我们需要怎么去解决 有没有用什么好的方法推荐 下面我们一起来看看msvcr110 dll丢失的解决方法
  • G++ 编译选项(自用)

    fPIC 使用相对地址加载共享库 rdynamic 将所有链接库符号 添加到动态符号表 Wno unused variable 未使用变量不报警 Werror return type 有返回值的函数 不写return 报错 Wno depr
  • 区块链系统:签名

    签名算法是使用私钥签名 公钥验证的方法 对一个消息的真伪进行确认 如果一个人持有私钥 他就可以使用私钥对任意的消息进行签名 即通过私钥sk对消息message进行签名 得到signature signature sign message s
  • IOS 笔记大全 (UI控件到网络协议)

    1 MVC模式 model view controller 是一种帮你把代码功能和显示划分出来的设计模式 2 model 较为底层的数据引擎 负责管理实体中所继承的数据 3 view 和用户交互界面 4 controller 连接二者的桥梁
  • 202317读书笔记|《心寂犹似远山火:斋藤茂吉短歌300》——茫茫心海里,孤帆与谁同

    202317读书笔记 心寂犹似远山火 斋藤茂吉短歌300 茫茫心海里 孤帆与谁同 很高兴周五这一天 之前很粉俳句的时候订阅的书都在今天都上架了 可以一饱眼福了 短歌是日本和歌一种诗体 是由三十一音节组成的定型歌体 格式为 五七五七七 的排列
  • Linux安装OpenSSL

    安装openssl前先安装zlib cd usr local src wget https zlib net zlib 1 2 13 tar gz tar zxvf zlib 1 2 11 tar gz 目标地址可能变 可以到官网找到最新的
  • NVIDIA Nsight Systems 入门及使用

    目录 Nsight Systems 入门 什么是Nsight Systems 用户能用nsys做什么 CUDA Version Nsight Systems 使用 nsys windows 版本GUI使用步骤 nsys Linux CLI
  • 机器学习14(网格搜索调参)

    文章目录 简介 理论基础 调参目标 基于网格搜索的超参数调整方法 参数空间 交叉验证与评估指标 基于Scikit Learn的网格搜索调参 训练过程 多分类评估指标 F1 Score ROC AUC GridSearchCV进阶使用 构建全
  • jmeter使用非GUI,命令行模式进行压力测试

    一 启动jmeter 启动之后会有两个窗口 一个cmd窗口 一个JMeter的 GUI 前面不要忽略CMD窗口的提示信息 CMD窗口的提示信息 Don t use GUI mode for load testing only for Tes
  • 探究Facebook相似性搜索工具 faiss的原理

    探究Facebook相似性搜索工具的原理 它是一个能使开发者快速搜索相似多媒体文件的算法库 而该领域一直是传统的搜索引擎的短板 借助Faiss Facebook 在十亿级数据集上创建的最邻近搜索 nearest neighbor searc
  • ModuleNotFoundError: No module named ‘sklearn‘

    2 ModuleNotFoundError No module named sklearn 安装这个包之前需要先安装sklearn的依赖库 Numpy Scipy matplotlib pip install numpy pip insta
  • java 压缩 工具类_工具类:ZipUtil.java:文件压缩解压

    工具类 ZipUtil java 文件压缩解压 工具类 ZipUtil java 文件压缩解压 JavaWeb工具类目录 http baike xsoftlab net view 1059 html http baike xsoftlab
  • 安装VM虚拟机

    安装VM虚拟机 一 关闭防火墙 1 打开Windows设置 点击更新和安全 2 点击暂停Windows更新 并点击Windows安全中心 3 点击病毒和威胁防护 在 病毒和威胁防护 设置中的实时保护等关闭 4 在Windows安全中心中点击
  • 微信支付

    一 微信小程序支付开发步骤 1 统一下单 1 1 准备参数 接口链接 https api mch weixin qq com pay unifiedorder 需要参数 param string appid 小程序ID param stri
  • Spring源码解读(9)---解析配置类

    Spring源码解读 9 解析配置类 解析配置类 1 在启动Spring时 需要传入一个AppConfig class给ApplicationContext ApplicationContext会根据AppConfig类封装为一个BeanD
  • android布局之线性布局的属性用法

    1 gravity属性 gravity 用于设置该控件内容相对于该控件的相对对齐方式 layout gravity 用于设置该控件相对于父控件的相对对齐方式 举例
  • 计算机网络ld查找,查找电脑id_怎么查找电脑ip地址

    2016 12 08 15 07 59 查找电脑主机ID方法 方法一 开始 gt 所有程序 gt 附件 gt 命令提示符 gt 输入Systeminfo命令 gt 回车 等一会 找到 主机名 这一项 其后面显示 2016 11 21 16
  • tkinter比较常用的组件

    1 输入框组件 输入框 Entry 用来输入单行内容 可以方便地向程序传递用户参数 这里通过一个转换摄氏度和华氏度的小程序来演示该组件的使用 import tkinter as tk def btnHelloClicked cd float