python GUI开发: tkinter选项卡,移动滑块,颜色选择框,文本对话框,对话输入框,通用消息框模块用法详解

news2024/11/26 4:50:31

在这里插入图片描述

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

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

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

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

文章目录

  • tkinter其他组件
    • 1.OptionMenu 选择项
      • 【示例】OptionMenu(选择项)的基本用法
    • 2.Scale 移动滑块
      • 【示例】使用 Scale(移动滑块)控制字体大小变化
    • 3.颜色选择框
      • 【示例】颜色选择框基本用法
    • 4.文件对话框
      • 【示例】文件对话框基本用法
      • 【示例】打开指定 txt 文件,并读出文件内容到窗口
    • 5.简单输入对话框
      • 【示例】简单对话框基本用法
    • 6.通用消息框
      • 【示例】通用消息框案例展示

tkinter其他组件

我们在前面介绍了最常用的几个组件,接下来我们介绍其他一些组件。

1.OptionMenu 选择项

OptionMenu(选择项)用来做多选一,选中的项在顶部显示。
OptionMenu(选择菜单)事实上是下拉菜单的改版,它的发明弥补了 Listbox 组件无法实现下拉列表框的遗憾。

【示例】OptionMenu(选择项)的基本用法

"""optionmenu的使用测试"""


from tkinter import *

root = Tk()
root.geometry("250x120+200+300")
root.title('选项卡测试')

#设置个变量
v = StringVar()
#默认选中百战程序员
v.set("百战程序员")
#创建选项卡,后面选项都通过普通实参传参即可,不可用关键字传参
om = OptionMenu(root, v, "景天科技苑", "百战程序员", "卓越班[保底20万]","天涯课堂")

om["width"] = 12
om.pack()


def test1():
    #选中哪个,就把哪个打印出来
    print("最喜爱的机构:", v.get())
#    v.set("景天科技苑")       # 直接修改了optionmenu中选中的值

#按钮绑定事件,点击确定,打印出最喜欢的机构
Button(root, text="确定", command=test1).pack()

root.mainloop()

运行,默认选的是百战程序员
在这里插入图片描述

我们可以选择其他项
在这里插入图片描述

点确定,打印出来
在这里插入图片描述

2.Scale 移动滑块

Scale(移动滑块)用于在指定的数值区间,通过滑块的移动来选择值。
Tkinter组件:Scale
Scale(刻度)组件看起来像是一个带数据的 Scrollbar(滚动条)组件,但事实上它们是不同的两个东东。Scale 组件允许用于通过滑动滑块来选择一个范围内的数字。你可以控制该组件的最大值、最小值,以及分辨率。

  1. 何时使用 Scale 组件?
    当你希望用户输入某个范围内的一个数值,使用 Scale 组件可以很好的代替 Entry 组件。

  2. 用法
    创建一个指定范围的 Scale 组件其实非常容易,你只需要指定它的 from 和 to 两个选项即可。但由于 from 本身是 Python 的关键字,所以为了区分需要在后边紧跟一个下划线:from_

  3. 参数
    Scale(master=None, **options) (class)
    master – 父组件

**options – 组件选项,下方表格详细列举了各个选项的具体含义和用法:
在这里插入图片描述在这里插入图片描述

  1. 方法

4.1 coords(value=None)
– 获得当前滑块的位置对应 Scale 组件左上角的相对坐标
– 如果设置 value 参数,则返回当滑块所在该位置时的相对坐标

4.2 get()
– 获得当前滑块的位置
– Tkinter 会尽可能地返回一个整型值,否则返回一个浮点型值

4.3 identify(x, y)
– 返回一个字符串表示指定位置下(如果有的话)的 Scale 部件
– 返回值可以是:“slider”(滑块),“trough1”(左侧或上侧的凹槽),“trough2”(右侧或下侧的凹槽)或 “”(啥都没有)

4.4 set(value)
返回一个字符串表示指定位置下(如果有的话)的 Scale 部件
– 返回值可以是:“slider”(滑块),“trough1”(左侧或上侧的凹槽),“trough2”(右侧或下侧的凹槽)或 “”(啥都没有)

【示例】使用 Scale(移动滑块)控制字体大小变化

"""scale滑块的使用测试"""

from tkinter import *

root = Tk();root.geometry("400x150")


def test1(value):
    print("滑块的值:",value)
    #字体大小随着滑块值的大小而改变
    newFont = ("楷体",value)
    a.config(font=newFont)

#command调用的函数的参数,就是当前滑块的值
s1 = Scale(root,from_=10,to=50,length=200,tickinterval=5,orient=HORIZONTAL,command=test1)
s1.pack()


a = Label(root,text="景天科技苑",width=10,height=1,bg="green",fg="red")
a.pack()

#第二种方式滑块的值
def show():
    print("第二种方式获取滑块的值:",s1.get())

Button(root,text="获取滑块的值",command=show).pack()

root.mainloop()

运行
在这里插入图片描述

当我们滑动滑块,下面标签字体的大小随之改变
在这里插入图片描述

点击按钮,也可以获取当前滑块位置的值
在这里插入图片描述

3.颜色选择框

颜色选择框可以帮助我们设置背景色、前景色、画笔颜色、字体颜色等等。

Tkinter 提供了一个简单易用的颜色选择器模块 colorchooser,通过调用 colorchooser.askcolor() 方法,我们可以轻松实现颜色选择功能。
效果如下
在这里插入图片描述

【示例】颜色选择框基本用法

"""askcolor颜色选择框的测试,改变背景色"""

from tkinter import  *
from tkinter.colorchooser import *

root = Tk();root.geometry("400x150")


def test1():
    #askcolor方法,调出颜色选择框。color="red",设置默认颜色为红色
    s1 = askcolor(color="red", title="选择背景色")
    #打印当前选取的颜色,以元祖方式呈现,第一个元素是颜色的RGB值,第二个是颜色的十六进制值
    print(s1)
    # s1的值是:((0.0, 0.0, 255.99609375), '#0000ff')
    #将窗口的颜色设置为选取的颜色,十六进制的颜色值
    root.config(bg=s1[1])


Button(root,text="选择背景色",command=test1).pack()

root.mainloop()

运行
在这里插入图片描述

当我们点击按钮,会弹出颜色选择框
在这里插入图片描述

当我们选一个颜色点击确定,root窗口的颜色就设置为我们选的颜色
在这里插入图片描述

4.文件对话框

文件对话框帮助我们实现可视化的操作目录、操作文件。最后,将文件、目录的信息传入到
程序中。文件对话框包含如下一些常用函数:
在这里插入图片描述

命名参数 options 的常见值如下:
在这里插入图片描述

filetypes详解: 指定筛选文件类型的下拉菜单选项,该选项的值是由二元组构成的列表,每个二元组是由(类型名,后缀)构成,例如:filetypes=[(‘文本’, ‘.txt’), (‘栅格’, ‘.tif’), (‘动图’, ‘.gif’)]。
(看情况,当文件夹中文件很多且类型很多,建议给出该参数)

multiple: 是否确定选择多个文件,if true user may select more than one file。

例如:
选择一个文件:
filedialog.askopenfilename(title=‘请选择一个文件’, initialdir=r’D:\数据\测试数据’, filetypes=[(“文本文档”, “.txt”), (‘Excel’, ‘.xls .xlsx’), (‘All Files’, ’ *‘)], defaultextension=’.tif’, multiple=True)

选择多个文件:
filedialog.askopenfilename(title=‘请选择多个文件’, initialdir=r’D:\数据\测试数据’, filetypes=[( “文本文档”, “.txt”), (‘Excel’, ‘.xls .xlsx’), (‘All Files’, ’ *')])

选择文件存储路径:
filedialog.asksaveasfile(title=‘请选择文件存储路径’, initialdir=r’D:\数据\测试数据’, filetypes=[( “文本文档”, “.txt”), (‘Excel’, ‘.xls .xlsx’), (‘All Files’, ’ *‘)], defaultextension=’.tif’)

【示例】文件对话框基本用法

"""文件对话框获取文件"""

from tkinter import  *
from tkinter.filedialog import *

root = Tk();root.geometry("400x100")


def test1():
    #filetypes指定上传文件的类型,('All Files', ' *')匹配任何文件后缀
    f = askopenfilename(title="上传文件",initialdir="e:",filetypes=[("视频文件",".mp4"),("图片",".png"),('All Files', ' *')])
    #返回的是个字符串路径
    print("返回的对象",f,type(f))
    show["text"]=f


Button(root,text="选择编辑的视频或图片文件",command=test1).pack()

show = Label(root,width=40,height=3,bg="green")
show.pack()

root.mainloop()

运行
在这里插入图片描述

点击按钮,选择文件
看到默认选择E盘,文件后缀可以选mp4,png以及所有类型
在这里插入图片描述

选择一个png图片,点击确定,看到将文件路径打印出来
在这里插入图片描述

【示例】打开指定 txt 文件,并读出文件内容到窗口

#askopenfile读取文件,显示到窗口标签

from tkinter import  *
from tkinter.filedialog import *

root = Tk();root.geometry("400x100")

def test1():
    with askopenfile(title="上传文件",initialdir="d:",filetypes=[("文本文件",".txt")]) as f:
        if f:
            show["text"]=f.read()
        else:
            print("未上传文件")



Button(root,text="选择读取的文本文件",command=test1).pack()

show = Label(root,width=40,height=3,bg="green")
show.pack()

root.mainloop()

运行
在这里插入图片描述

点击按钮
在这里插入图片描述

Label上显示从文件中读取的内容
在这里插入图片描述

5.简单输入对话框

simpledialog(简单对话框)包含如下常用函数:
在这里插入图片描述

参数中,title 表示窗口标题;prompt 是提示信息;命名参数 kw 为各种选项:initialvalue
(初始值)、minvalue(最小值)、maxvalue(最大值)。

【示例】简单对话框基本用法

"""简单对话框"""
from tkinter import *
from tkinter.simpledialog import *

root = Tk();root.geometry("400x100")


def test1():
    a = askinteger(title="输入年龄",prompt="请输入年龄",initialvalue=18,minvalue=1,maxvalue=150)
   # askstring、askfloat框使用方式一样
    show["text"]=a


Button(root,text="景天你多大了? 请输入",command=test1).pack()

show = Label(root,width=40,height=3,bg="green")
show.pack()

root.mainloop()

运行
在这里插入图片描述

点击按钮,默认值是18
在这里插入图片描述

如果输入的值超过范围,会弹窗提示
在这里插入图片描述

输入正常的值,就会显示到标签上
在这里插入图片描述

6.通用消息框

messagebox(通用消息框)用于和用户简单的交互,用户点击确定、取消。如下列出了
messagebox 的常见函数:
在这里插入图片描述

【示例】通用消息框案例展示

"""通用消息话框"""
from tkinter import *
from tkinter.messagebox import *

root = Tk();root.geometry("400x100")


def test1():
    a = askokcancel(title="景天科技苑",message="喜欢景天科技苑吗?")
    print("输入的值是:",a)
   # askstring、askfloat框使用方式一样
    show["text"]=a


Button(root,text="是否喜欢景天? 请点击",command=test1).pack()

show = Label(root,width=50,height=50,bg="green")
show.pack()

root.mainloop()

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

点击确定
在这里插入图片描述

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

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

相关文章

Vue57-组件的自定义事件_解绑

给谁绑的自定义事件,就找谁去触发;给谁绑的自定义事件,就找谁去解绑; 一、解绑自定义事件 1-1、解绑一个自定义事件 到student.vue组件中去解绑。 1-2、解绑多个自定义事件 使用数组来解绑多个。 1-3、解绑所有的自定义事件 二、…

Linux-远程访问及控制

一、SSH远程管理 SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。与早期的 Telent(远程登录…

计算机毕业设计Python+Vue.js知识图谱音乐推荐系统 音乐爬虫可视化 音乐数据分析 大数据毕设 大数据毕业设计 机器学习 深度学习 人工智能

开发技术 协同过滤算法、机器学习、LSTM、vue.js、echarts、django、Python、MySQL 创新点协同过滤推荐算法、爬虫、数据可视化、LSTM情感分析、短信、身份证识别 补充说明 适合大数据毕业设计、数据分析、爬虫类计算机毕业设计 介绍 音乐数据的爬取:爬取歌曲、…

DFS 迷宫

个人感觉DFS没有递归那么烧脑 简单迷宫 如何接受二维数组 先构建A[MAXN][MAXN]&#xff0c;人后二重循环 #include <iostream> #include <vector> #include <cmath> #include <string> #include <cstring> using namespace std; const int N…

Ubuntuwin11双系统

一、准备工作 win11与ubuntu20.4双系统安装案例教程,先查看引导模式参数不服则不要安装否则会报异常 查看BIOS引导模式 查看磁盘分区格式 下载Ubuntu镜像 所有版本下载地址,我的华为云镜像ubuntu20.4这个版本地址

【ComfyUI】Stable Diffusion 3 加Controlnet

基于 instantX-research/diffusers_sd3_control: &#x1f917; Diffusers: State-of-the-art diffusion models for image and audio generation in PyTorch and FLAX. (github.com) 和 ZHO-ZHO-ZHO/ComfyUI-SD3-Medium-CN-Diffusers: ComfyUI SD3-Medium ControlNet&#…

HTTPS原理详解新版

http和https区别 附注&#xff1a; &#xff08;1&#xff09;SSL和TLS其实是一个东西&#xff1b; &#xff08;2&#xff09;完整性通过摘要和原文按照一定算法比对 Https的工作流程 加密算法 数据完整性 Https性能优化

强大的api管理系统Storm Core API_V1.1免授权源码

强大的api管理系统Storm Core API_V1.1免授权源码&#xff0c;带用户key和ip白名单功能 可设置付费操作等 更新日志 此次更新功能比较多 1.完善个人中心页面 2.完善注册登录页面 3.完善key功能 4.增加ip白名单功能 5.以及一些其他小小的美化 6.模板dxx的图片可单个自定…

uniapp 微信小程序更改轮播图指示点

仅微信小程序有效 /* #ifdef MP-WEIXIN */// 默认指示点样式wx-swiper .wx-swiper-dot {position: relative;background-color: #ffffff;width: 28rpx;border-radius: 10rpx;height: 8rpx;opacity: 0.4;}// 当前选中样式wx-swiper .wx-swiper-dot-active {background-color: #f…

Avalonia for VSCode

1、在VSCode中编辑AvaloniaUI界面&#xff0c;在VSCode中搜索Avalonia&#xff0c;并安装。如下图&#xff0c;可以发现Avalonia for VSCode还是预览版。 2、 创建一个Avalonia 项目。 选择项目类型 输入项目名称 选择项目所在文件夹 打开项目 3、项目架构如下图。 4、builde…

记一次线上jVM调优

文章目录 问题描述问题分析尝试优化业务代码优化方案修改后代码补充点 问题描述 部门调整&#xff0c;接手一个新项目&#xff0c;为方便后续描述叫user-web&#xff0c;随后推动IT降本&#xff0c;要求根据实际业务量调整服务器实例数量和配置&#xff0c;调整前服务器配置为…

docker命令docker desktop 安装 xiaomimi8/awvs14-log4j-2022 详细图文教程

docker命令docker desktop 安装 xiaomimi8/awvs14-log4j-2022 详细图文教程 1. 拉取镜像 通过命令拉取 # 拉取镜像 docker pull xiaomimi8/awvs14-log4j-2022 # 查看镜像 docker images通过doker desktop直接查看镜像 2. 启动镜像 通过命令启动 docker run -it -d -p 13…

SpringBoot购物网站

摘要 随着信息技术的高速发展&#xff0c;二十一世纪的网络技术和网络应用正在快速融入人们的生活&#xff0c;并且由于网络服务以及网络应用日渐普及&#xff0c;人们对于现在生活的需求也随之增长&#xff0c;而网上购物的便捷对人们的吸引力越来越大&#xff0c;购物网站可…

阿里云 邮件系统DNS域名解析 搭配 postfix+dovecot 邮件服务器

1 创建邮箱域名A记录(一般邮箱客户端&#xff0c;增加pop,imap,stmp 3条记录) 登录阿里云控制台--云解析DNS 2 MX记录 3 SPF记录

STM32高级控制定时器(STM32F103):PWM输出模式

目录 概述 1 PWM模式介绍 2 PWM类型 2.1 PWM边缘对齐模式 2.2 PWM中心对齐模式 3 使用STM32Cube配置PWM 3.1 STM32Cube配置参数 3.2 生成Project 4 设置PWM占空比 4.1 函数介绍 4.3 函数源码 5 测试代码 5.1 编写测试代码 5.2 函数源码 6 运行代码 概述 本文主…

微信小程序-界面提示框和消息

一.Loading加载框 小程序提供了wx.showLoading用来在加载界面的时候使用&#xff0c;比如加载图片和数据的时候可以使用。 常常和wx.hideLoading()配合使用&#xff0c;否则加载框一直存在。 其效果如下&#xff1a; 代码如下&#xff1a; //显示加载消息wx.showLoading({//提…

编译原理:代替LR的MP:2.遇到的问题

用指针加速 MP是multi-pass&#xff0c;多遍分析法&#xff0c;它是从“先乘除后加减”中得来的灵感。在实践中&#xff0c;发现C语言优先级有15级&#xff0c;如果将源代码处理15遍&#xff0c;每一遍都从头开始找&#xff0c;势必很慢。所以&#xff0c;有了用指针加速的想法…

Vue58-组件的自定义事件_总结

一、需求 父组件App收到子组件student传过来的数据&#xff0c;要在页面上呈现&#xff01; name是App的子组件student&#xff0c;通过自定义事件传过来的。 计算属性&#xff0c;得有原数据才能计算&#xff01;计算的属性要是已经存在的&#xff1a;data里面有的、props里面…

【CSS in Depth2精译】1.1.1 样式表来源

您添加到网页的样式表并非浏览器呈现样式的唯一来源。样式表有三种不同的类型或来源。您添加到页面的样式称为 作者样式&#xff08;author styles&#xff09;&#xff1b;此外还有 用户样式&#xff08;user styles&#xff09;&#xff0c;即终端用户设置的自定义样式&#…

font-spider按需生成字体文件

font-spider可以全局安装,也可以单个项目内安装,使用npm run xxxx的形式 npm i font-spider "dev": "font-spider ./*.html" <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name&…