GUI界面开发之tkinter(三) 按钮类组件和选择列表类组件

news2024/9/21 20:44:09

大家好!我是码银儿~,欢迎关注🥰:

  • CSDN:码银
  • 公众号:码银学编程

一、按钮类组件

按钮类组件顾名思义就是按钮,跟平时大家看见的按钮没啥区别,允许用户通过点击执行操作。以下是三种常见的按钮类组件:

  1. Button - 普通按钮组件,用户点击后可以触发一个事件或执行一个函数。

    button = tk.Button(root, text="点击我", command=lambda: print("按钮被点击了!"))
    button.pack()
    
  2. Radiobutton - 单选按钮组件,通常用于一组选项中,用户只能选择其中一个选项。单选按钮通常通过变量来跟踪当前的选中状态。

    var = tk.StringVar(value="选项1")  # 创建一个StringVar变量来存储选项状态
    radio1 = tk.Radiobutton(root, text="选项1", variable=var, value="选项1")
    radio1.pack(anchor='w')
    radio2 = tk.Radiobutton(root, text="选项2", variable=var, value="选项2")
    radio2.pack(anchor='w')
    

在这里插入图片描述

  1. Checkbutton - 复选框组件,允许用户选择或取消选择一个或多个选项。

    check1 = tk.Checkbutton(root, text="选项1", variable=tk.BooleanVar())
    check1.pack(anchor='w')
    check2 = tk.Checkbutton(root, text="选项2", variable=tk.BooleanVar())
    check2.pack(anchor='w')
    

每个按钮类组件都可以设置一些通用的选项,例如:

  • text: 显示在按钮上的文本。
  • command: 点击按钮时执行的函数或命令。
  • variable: 用于存储按钮状态的变量(对于RadiobuttonCheckbutton)。
  • value: 与按钮相关联的值(对于Radiobutton)。

按钮类组件通常用于收集用户输入或触发应用程序中的操作。例如,一个Button可以用于提交表单,一个Radiobutton可以用于让用户从几个选项中选择一个,而Checkbutton可以用于让用户选择多个选项。

@一下代码
下面,我将上述代码运行一下,让大家看看tkinter的组件风格~
This is a 包含上述组件的简单示例:

import tkinter as tk

root = tk.Tk()
root.title("按钮类组件示例")
root.minsize(300, 200)  # 设置窗口最小尺寸为200x100
root.maxsize(800, 600)  # 设置窗口最大尺寸为800x600

# 创建一个Button组件
button = tk.Button(root, text="点击我", command=lambda: print("按钮被点击了!"))
button.pack(pady=10)

# 创建一组Radiobutton组件
selected_option = tk.StringVar(value="选项1")
radio1 = tk.Radiobutton(root, text="选项1", variable=selected_option, value="选项1")
radio1.pack(anchor='w')
radio2 = tk.Radiobutton(root, text="选项2", variable=selected_option, value="选项2")
radio2.pack(anchor='w')

# 创建Checkbutton组件
check1 = tk.Checkbutton(root, text="选项1", variable=tk.BooleanVar())
check1.pack(anchor='w')
check2 = tk.Checkbutton(root, text="选项2", variable=tk.BooleanVar())
check2.pack(anchor='w')

root.mainloop()

在这里插入图片描述

在这个示例中,我们创建了一个窗口,其中包含一个按钮、两个单选按钮和两个复选框。点击按钮会打印一条消息,单选按钮和复选框允许用户选择不同的选项。

二、选择列表类组件

在Tkinter中,主要有OptionMenuListboxComboboxScrollbar 这四种选择列表类组件。以下是这些组件的简要介绍和用法示例,请看~:

OptionMenu 组件

OptionMenu 组件提供了一个下拉列表,允许用户从预定义的选项中选择一个。它由一个标签和一个下拉菜单组成。

import tkinter as tk

root = tk.Tk()
root.title("OptionMenu 示例")

# 创建OptionMenu组件
var = tk.StringVar(value="吃什么")
option_menu = tk.OptionMenu(root, var, "选项1", "选项2", "选项3")
option_menu.pack()

root.mainloop()

在这里插入图片描述

Listbox 组件

Listbox 是一个列表框组件,显示了一系列的项目,用户可以选择一个或多个项目。

import tkinter as tk

root = tk.Tk()
root.title("Listbox 示例")

# 创建Listbox组件
listbox = tk.Listbox(root)
listbox.pack()

# 添加项目到Listbox
items = ["项目1", "项目2", "项目3"]
for item in items:
    listbox.insert(tk.END, item)

root.mainloop()

在这里插入图片描述

Combobox 组件

Combobox 是一个组合框组件,结合了EntryListbox的特点,允许用户输入文本或从下拉列表中选择一个选项。

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("ttk.Combobox 示例")
root.minsize(300, 200)  # 设置窗口最小尺寸为200x100
root.maxsize(800, 600)  # 设置窗口最大尺寸为800x600

# 创建一个 Combobox 组件
combobox = ttk.Combobox(root)
combobox['values'] = ("选项1", "选项2", "选项3")  # 设置下拉选项
combobox.pack()

# 可以设置默认值
combobox.current(0)  # 设置默认值为第一个选项

# 获取用户选择的值
def get_selected():
    selected = combobox.get()
    print("选择的选项是:", selected)

# 绑定一个按钮来获取选择的值
button = tk.Button(root, text="获取选择的值", command=get_selected)
button.pack()

root.mainloop()

在这里插入图片描述

Scrollbar 组件

Scrollbar 是一个滚动条组件,通常与其他组件(如ListboxCanvas)一起使用,以提供滚动功能。

import tkinter as tk

root = tk.Tk()
root.title("Scrollbar 示例")

# 创建Listbox组件
listbox = tk.Listbox(root, height=6, width=50)
listbox.pack(side=tk.LEFT, fill=tk.BOTH)

# 创建Scrollbar组件
scrollbar = tk.Scrollbar(root, orient=tk.VERTICAL)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

# 将Scrollbar与Listbox关联
listbox.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=listbox.yview)

# 添加项目到Listbox
items = ["项目{}".format(i) for i in range(100)]
for item in items:
    listbox.insert(tk.END, item)

root.mainloop()

在这里插入图片描述

这些组件可以单独使用,也可以组合使用,以创建丰富的用户界面。例如,Listbox 可以与 Scrollbar 结合使用,以支持长列表的滚动;Combobox 可以提供下拉选择和文本输入的双重功能;OptionMenu 为用户提供了一个简单的选择列表。通过这些组件,开发者可以构建出功能丰富且用户友好的GUI应用程序。

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

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

相关文章

Awesome-LLMs-for-Video-Understanding - 基于大型语言模型的视频理解研究

Awesome-LLMs-for-Video-Understanding 是 基于大型语言模型的视频理解研究 github : https://github.com/yunlong10/Awesome-LLMs-for-Video-Understandingpaper:Video Understanding with Large Language Models: A Survey https://arxiv.org/pdf/2312.17432 视频…

五、前后端分离通用权限系统(5)

🌻🌻 目录 一、前端框架1.1、vue-element-admin1.1.1、Vue 概述1.1.2、Element-ui 概述1.1.3、ES6 概述 1.2、vue-admin-template1.2.1、简介1.2.2、下载1.2.3、安装1.2.4、源码目录结构(了解)1.2.5、改造登录&退出功能1.2.5.…

跨域解决 | 面试常问问题

跨域解决 | 面试常问问题 跨域问题一直是前端开发中不可避免的一部分,它涉及到浏览器的同源策略和安全机制。本文将深入解析跨域问题的本质,并探讨前端和后端的多种解决方案,同时分享一些扩展与高级技巧。最后,我们还将总结跨域解…

K8S系列——(二)、K8S部署RocketMQ集群

1、环境准备 要将RocketMQ部署到K8S上,首先你需要提前准备一个K8S集群环境,如图我已经准备好了一个版本为 v1.28.13 的 K8S 集群(其他版本也没问题): 角色IPMaster192.168.6.220Node-1192.168.6.221Node-2192.168.6.…

浏览器不开梯子无法上网,检查代理或防火墙或者找不到服务器ip地址

1、代理没有关闭 检查代理是否关闭 检查方法1: 在控制面版中找到Internet选项,点击连接栏,在连接栏中选择局域网设置。之后将代理服务器下面的框选中的对勾取消。最终如下 检查方法2: 打开设置,找到网络和internet…

书生浦语大模型实战营:LMDeploy量化部署

1.任务: 使用结合W4A16量化与kv cache量化的internlm2_5-1_8b-chat模型封装本地API并与大模型进行一次对话。 2.背景: 1.计算模型需要的权重大小: 1B代表10个亿参数,假如是16位浮点数(f16),也…

计算机视觉概念科普

计算机视觉(Computer Vision, CV)是一门多学科交叉的科学,旨在让计算机具备“看”的能力,即通过图像或视频数据来理解世界。它结合了信号处理、图像处理、模式识别、机器学习等多个领域的技术,让计算机能够执行诸如识别…

【Python学习手册(第四版)】学习笔记20.2-迭代和解析(二)-迭代解析、迭代方法的计时比较、函数陷阱

个人总结难免疏漏,请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本文较简单,主要是概括了解析语法(列表解析、生成器、集合、字典解析),以及对前面的各种迭代进行计时比较&#xf…

通过python解决原神解密

最近楼主玩原神世界任务做到稻妻了,在稻妻有很多解密游戏,但是博主最头疼的就是稻妻的石头解密QAQ(如图) 就在昨晚,楼主又碰到了石头解密,瞎打,半天解不出来。于是就想,有没有什么严…

如何在Windows下使用make编译Makefile

最近有小伙伴咨询我去编译运行一个程序。我一开始以为是CMakeLists,结果发现是makefile。 什么是Makefile ‌Makefile是一种用于自动化构建和管理程序的工具‌,它定义了项目中文件的依赖关系和构建步骤,帮助程序员自动化编译、链接和打包程序…

Ps:创建帧动画

在 Photoshop 中,帧动画 Frame Animation是一种通过在“时间轴”面板中创建和管理多个帧来实现动画效果的方式。 所谓帧动画,也就是传统意义上的逐帧动画,依次播放每个帧而构成的动画形式。每个帧记录了“图层”面板上所有图层的属性状态&…

QT Mainwindow下指定控件的setMouseTracking(true)和mousemoveevent函数失效-问题解决

目录: 一,问题描述二,解决方法2.1解决依据2.2方法实操 三,参考资料 一,问题描述 ☀️之前碰到过的一个问题,现在分享出来:想在qt哪里搞个鼠标移动在控件显示的图片上,然后实时显示对…

[数据集][目标检测]红外场景下车辆和行人检测数据集VOC+YOLO格式19069张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):19069 标注数量(xml文件个数):19069 标注数量(txt文件个数):19069 标…

一文带你画PCB板,有手就行

背景 最近写Autosar网络唤醒功能,想在实际硬件上验证,但是市面上没有找到板子验证,只能找人帮忙画PCB板。但是这里遇到比较大的问题,1、整个周期会比较长,板子不太可能一次就能完成,中间会出现修改的地方&…

C#/.NET/.NET Core技术前沿周刊 | 第 1 期(2024年8.12-8.18)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿,推荐…

【蓝牙协议栈】【BLE】【GATT】精讲GATT Profile架构(图文并茂精华版)

目录 1. 蓝牙BLE通用属性协议(GATT) 2.GATT角色介绍 3.GATT 层级和Profile架构 4. GATT Server架构(重点内容) 5. Characteristic架构(重点内容) 6. (Characteristic Properties)特性属性详解&#x…

一款免费的目录以及文件对比工具,替代Beyond Compare

Beyond Compare是一款功能强大的文件对比工具,但是由于是付费软件,很多没有购买的企业用户无法使用。CCompare就是一款替代Beyond Compare的免费方案,一款来自中国的可替换beycond compare, 免费使用的代码同步对比工具。 CCompare 是一款功…

【科研绘图】【分条热力图】:附Origin详细画图流程 + 案例分析

目录 No.1 理解分条热力图 No.2 画图流程 1 导入数据,绘制图形 2 设置绘图细节 3 色阶控制 4 设置坐标轴 5 效果图 No.3 案例分析 1 案例一 2 案例二 No.1 理解分条热力图 分条热力图,基于数据映射和颜色编码,是在热力图的基础上进…

聚星文社下载地址

聚星文社绘唐科技是一个文化传媒公司,以绘制唐朝相关的科技设备和场景为主题。该公司致力于通过插画、动画、游戏等形式,栩栩如生地展现唐朝时期的科技发展和生活场景。 聚星文社下载地址https://iimenvrieak.feishu.cn/docx/ZhRNdEWT6oGdCwxdhOPcdds7n…

unity Standard Assets资源商店无法安装解决方案

Unity游戏开发 “好读书,不求甚解;每有会意,便欣然忘食。” 本文目录: Unity游戏开发 Unity游戏开发unity中国 嗨嗨嗨,我来啦。 这几天的川渝之旅已经圆满结束了,今天开始正常给大家更新: Unity…