7个方便快速使用的Tkinter控件源码分享,赶快收藏

news2024/9/22 23:36:59

文章目录

  • 7个快速使用的Tkinter控件源码分享
    • 1. 按钮 Button
    • 2. 开关 Checkbutton
    • 3. 显示文本 Label
    • 4. 带名称、数值显示的划动条
    • 5. 带标签的复选框
    • 6. 带名称的输入框
    • 7. 带名称的微调框

7个快速使用的Tkinter控件源码分享

  • tkinter 是一个简单入手,但是功能十分强大的GUI编程库,学习入门很快,如果你还不会,点击阅读Tkinter详细教程:
    1. 强大的的GUI开发库 - Tkinter详细教程一
    2. 强大的的GUI开发库 - Tkinter详细教程二
    3. 强大的的GUI开发库 - Tkinter详细教程三
    4. Tkinter美化皮肤ttkbootstrap介绍
  • 实际开发中,每个控件都需要布局绑定特定的事件;并且控件并不会单独使用,会配合使用,比如使用滑动条需要知道滑动条改变的内容是什么,需要给滑动条一个名称,然后要知道滑动条设置的数值是多少,需要一个数值显示框。
  • 因此为了方便快速开发GUI程序,分享7个快速使用的控件源码,并备注的详细的说明和示例,可以快速学会使用;实际使用中直接复制粘贴即可。

备注说明:

  1. 组合功能部件库界面设计基于place的布局方法, 集成了位置布局以及部件大小设置
  2. 样式基于ttkbootstrap美化库,不了解的可以查看:Tkinter美化皮肤ttkbootstrap介绍

1. 按钮 Button

  • 按钮设计需要有按钮的样式名称布局按钮的大小,以及点击按钮后的事件函数
  • 源码:
import ttkbootstrap as tkbot
from ttkbootstrap.constants import *

class ClickButton(tkbot.Frame) :
    """
    style : 样式 "success-outline"   
                 "info-outline"
    name : 开关按钮名字
    PositionX : 摆放位置 横向距离
    PositionY : 摆放位置 纵向距离
    ButtonWidth : 按钮长度 名字4字符长度需要100
    ButtonHeight : 按钮宽度
    CallBack : 回调函数, 点击后执行该函数
    """
    def __init__(self, master=None, 
                style="success-outline", 
                name = "点击按钮",
                PositionX = 20,
                PositionY = 20,
                ButtonWidth = 100,
                ButtonHeight = 30,
                CallBack = None,
                ):
        super().__init__(master)
        self.CreateButton = None
        self.CreateApp(master, style, name, PositionX, PositionY, ButtonWidth, ButtonHeight, CallBack)

    def CreateApp(self, master, style, name, PositionX, PositionY, ButtonWidth, ButtonHeight, CallBack) :
        self.CreateButton = tkbot.Button(master, text = name, bootstyle = style, command = CallBack)
        self.CreateButton.place(x = PositionX,  y = PositionY, 
                                width = ButtonWidth, height = ButtonHeight)
    
    def GetCreateButton(self):
        """
        得到点击按钮对象
        """
        return self.CreateButton

if __name__ == "__main__" :
    root = tkbot.Window()
    root.title("组合部件库")
    root.geometry("800x400")
    root.resizable(0, 0) # 窗口大小固定死
    
    def ClickButtonCallBackFun():
        print("点击了按钮: 点我")

    def ClickButtonCallBackFun1():
        print("点击了按钮:触发")
        
    ClickButtonApp1 = ClickButton(root, 
                style="success-outline", 
                name = "点我",
                PositionX = 40,
                PositionY = 20,
                ButtonWidth = 100,
                ButtonHeight = 30,
                CallBack = ClickButtonCallBackFun)
    
    ClickButtonApp2 = ClickButton(root, 
            style="info-outline", 
            name = "触发",
            PositionX = 40,
            PositionY = 80,
            ButtonWidth = 100,
            ButtonHeight = 30,
            CallBack = ClickButtonCallBackFun1)
    root.mainloop()
  • 显示效果:
    在这里插入图片描述

2. 开关 Checkbutton

  • 开关按钮设计需要有按钮的样式名称布局按钮的大小,以及点击按钮后的事件函数,在事件函数中,获取到开关的状态,即是还是
    -源码:
import ttkbootstrap as tkbot
from ttkbootstrap.constants import *

class OpenCloseButton(tkbot.Frame) :
    """
    style : 样式 矩形 "success-square-toggle"   
                椭圆  "success-round-toggle"
    name : 开关按钮名字
    PositionX : 摆放位置 横向距离
    PositionY : 摆放位置 纵向距离
    ButtonWidth : 按钮长度 名字4字符长度需要100
    ButtonHeight : 按钮宽度
    CallBack : 回调函数, 参会为开关状态变量
    """
    def __init__(self, master=None, 
                style="success-square-toggle", 
                name = "开关按钮",
                PositionX = 20,
                PositionY = 20,
                ButtonWidth = 150,
                ButtonHeight = 30,
                CallBack = None,
                ):
        super().__init__(master)
        self.OpenCloseVar = tkbot.BooleanVar()
        self.CreateButton = None
        self.CallBack = CallBack
        self.CreateApp(master, style, name, PositionX, PositionY, ButtonWidth, ButtonHeight, CallBack)

    def CreateApp(self, master, style, name, PositionX, PositionY, ButtonWidth, ButtonHeight, CallBack) :
        self.CreateButton = tkbot.Checkbutton(master, text=name, bootstyle=style, 
                                           variable=self.OpenCloseVar,
                                           command= lambda x = self.OpenCloseVar : CallBack(x))
        self.CreateButton.place(x = PositionX, 
                                y = PositionY, 
                                width = ButtonWidth,
                                height = ButtonHeight, 
                                anchor = W)
    
    def 

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

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

相关文章

谷歌DeepMind推出SIMA智能体,可以跟人一起玩游戏

谷歌 DeepMind 推出了 SIMA,这是一种通过训练学习游戏技能的人工智能代理,因此它玩起来更像人类,而不是一个只做自己事情的强大人工智能。 从早期与 Atari 游戏合作,到以人类大师级别玩《星际争霸 II》的 AlphaStar 系统&#xf…

算法设计与分析-动态规划算法的应用——沐雨先生

一、实验目的 1. 掌握动态规划算法的基本思想,包括最优子结构性质和基于表格的最优值计算方法。 2.熟练掌握分阶段的和递推的最优子结构分析方法。 3. 学会利用动态规划算法解决实际问题 。 二、实验内容 1. 问题描述 &#…

Open-Sora揭秘:这款开源视频生成神器能否超越OpenAI的Sora?

近日,我开始研究开源视频生成项目Open-Sora。 Open-Sora的核心思想,其实就是通过开源的方式,让先进的视频生成技术能够普及到大众手中。 而且,它还提供了精简又用户友好的工具和内容。 这样一来,视频制作的复杂性就…

Postman接口做关联测试的方法步骤

应用场景 假设下一个接口登录需要上一个接口的返回值,例如请求需要先登录获取到token,下一个请求要携带对应的token才能进行请求 方法:通过设置全局变量/环境变量 方法一:设置全局变量 1.先请求登录接口,请求成功之后…

解决微信小程序代码包大小限制方法

1 为什么微信小程序单个包的大小限制为 2MB 微信小程序单个包的大小限制为 2MB 是出于以下几个考虑: 保证小程序的启动速度:小程序的启动速度是影响用户体验的关键因素之一。如果包太大,会导致小程序启动时间过长,从而影响用户体…

2024年【熔化焊接与热切割】报名考试及熔化焊接与热切割复审考试

题库来源:安全生产模拟考试一点通公众号小程序 熔化焊接与热切割报名考试考前必练!安全生产模拟考试一点通每个月更新熔化焊接与热切割复审考试题目及答案!多做几遍,其实通过熔化焊接与热切割模拟考试题库很简单。 1、【单选题】…

Java反射机制的讲解及其示例说明

Java 反射机制是指在运行时动态地获取类的信息以及操作对象的方式。它允许程序在运行时检查和操作类、方法、属性等,而不需要在编译时就确定这些属性。通过反射机制,我们可以在运行时动态地创建对象、调用方法、获取属性等。 Java 反射机制提供了以下主…

LeetCode每日一题【24. 两两交换链表中的节点】

思路:先创建虚拟头结点,再用双指针,两两交换 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr…

2024.3.21 QT

思维导图 自由发挥登录窗口的应用场景,实现一个登录窗口界面。(不要使用课堂上的图片和代码,自己发挥,有利于后面项目的完成) 要求: 1. 需要使用Ui界面文件进行界面设计 2. ui界面上的组件相关设置&…

C++的vector类(一):vector类的常见操作

目录 前言 Vector类 遍历与初始化vector ​vector的扩容机制 vector的对象操作 find与insert 对象数组 前言 string类中还有一些内容需要注意: STL 的string类怎么啦? C面试中string类的一种正确写法 C STL string的Copy-On-Write技术 C的st…

java 继承(上)

在说继承之前,先看Student、Teacher这两个类,通过下面的代码可以看出什么? 细心的你可能已经有所发现了,那就是它们都含有相同的属性和方法。 如果把相同特征提取出来,放到一个类中,暂时先把这个类叫做 Tan…

【Linux】多线程概念 | POSIX线程库

文章目录 一、线程的概念1. 什么是线程Linux下并不存在真正的多线程,而是用进程模拟的!Linux没有真正意义上的线程相关的系统调用!原生线程库pthread 2. 线程和进程的联系和区别3. 线程的优点4. 线程的缺点5. 线程异常6. 线程用途 二、二级页…

25.删除链表中倒数第N个结点

题意:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* dummyHeadnew ListNode(0); //定义虚拟头结点ListNode* fastdummyHead; //定…

32.网络游戏逆向分析与漏洞攻防-游戏网络通信数据解析-网络数据分析原理与依据

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于:易道云信息技术研究院VIP课 上一个内容:31.其它消息的实…

浅谈游戏地图中位置实时更新的技术方案

地图如今在游戏中发挥的作用越来越重要,随着电子竞技的兴起,地图逐渐成为了为玩家创造体验的直接舞台。希望本文能对有兴趣了解游戏地图背后实现原理的同学一些帮助。 什么是游戏地图 在游戏中可以通过3D场景虚拟一个完整的世界,当3D场景较为…

基于springboot的大学生租房平台系统

技术:springbootmysqlvue 一、系统背景 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对大学生租房信息管理混乱…

C语言每日一题07

一、题目 二、解析 逻辑与 &&、逻辑或 || 均有“短路”特性: 逻辑与&&“短路”:当逻辑与&&的左操作数为逻辑 “假“ 时,就足以判断该逻辑运算的结果为假了,故右操作数就不再被执行。 逻辑或||“短路”&#xff1a…

使用PLCSIM Advanced仿真博途运动控制

作者顾工首先,添加一个CPU,直接添加一个1518T,反正仿真,不用最好的干嘛呢。是吧。当然,你也可以添加一个你喜欢的PLC,这里不强求。 然后添加工艺对象,我们简单添加一个定位轴。 在工艺对象&am…

GPT-5揭秘:Lex Fridman与Sam Altman播客热议,AGI时代的新变革即将来临!

嘿,朋友们,你们知道吗?Lex Fridman和Sam Altman又聚在一起了,这次是在播客上。 在播客中,他们聊了很多,包括董事会的幕后故事、Elon Musk的诉讼案,甚至还提到了Ilya、Sora这些名字。 但真正让…

跟着官方文档一步一步搭建Elastic Stack(3节点ES集群+Kibana+Filebeat+Metricbeat)

文章目录 源码仓库硬件要求配置文件docker-compose.ymlfilebeat.ymlmetricbeat.yml 配置项解读以及注意事项docker-compose.yml解读filebeat配置解读metricbeat配置解读SSL配置ILM配置 运行运行截图 写在最后 本篇文章是使用Filbeat将产品环境的access_lo同步至Elastic Stack中…