【Tkinter系列13/15】标准化外观和选项数据库
27. 标准化外观和选项数据库
可以轻松地将颜色、字体和其他选项应用于 小部件,当您创建它们时。然而
-
如果您希望很多小部件具有相同的 背景颜色或字体,指定每个都很乏味 每次选项,以及
-
让用户覆盖您的选择是很好的 他们最喜欢的配色方案、字体和其他选择。
因此,我们使用选项的想法 数据库以设置默认选项值。
-
应用程序可以指定文件(例如 使用的标准文件 X 窗口系统),其中包含用户的 偏好。您可以将应用程序设置为读取 该文件并告诉 Tkinter 使用这些默认值。看 上文关于 .option_readfile() 方法的部分在 第 26 节 “通用小部件方法”部分,用于 此文件的结构。
.Xdefaults -
您的应用程序可以直接为一个指定默认值 或使用 .option_add() 方法的多种类型的小部件;请参阅第 26 节 “通用小部件方法”下的此方法。
在我们讨论如何设置选项之前,请考虑问题 一般自定义 GUI 的外观。我们可以 为应用程序中的每个小部件命名,然后询问 用户指定每个名称的每个属性。但是这个 很麻烦,并且还会使应用程序难以 重新配置 - 如果设计器添加新微件,则 用户必须描述每个新属性的每个属性 控件。
因此,选项数据库允许程序员和用户 指定描述的一般模式 要配置的小组件。
这些模式对小部件的名称进行操作,但是 小部件使用两个并行命名 命名方案:
-
每个小部件都有一个类名。 默认情况下,类名与类相同 构造函数:用于按钮、框架等。但是,你 可以创建新的小部件类,通常继承 从课堂上,并给他们新的 你自己创作的名字。有关详细信息,请参见第 27.1 节 “如何命名小部件类”。
'Button''Frame'Frame -
您还可以为任何小部件提供一个实例 名称。小组件的默认名称为 通常是一个无意义的数字(请参见第 5.11 节 “窗口名称”)。但是,与小部件一样 类,您可以为任何小部件指定名称。请参阅的 第 27.2 节 “如何命名小部件实例”部分了解详细信息。
因此,每个应用程序中的每个小部件都有两个 名称的层次结构 - 类名层次结构和 实例名称层次结构。例如,按钮 嵌入在文本小部件中,该小部件本身嵌入在 框架将具有类层次结构。它可能还有一个实例 层次结构有点像如果你这么命名 所有实例。初始点代表根 窗;有关更多信息,请参见第 5.11 节 “窗口名称” 有关窗口路径名的信息。Frame.Text.Button.mainFrame.messageText.panicButton
选项数据库机制可以使用任一类 定义选项时的名称或实例名称,以便您可以 使选项适用于整个类(例如,所有按钮都有 蓝色背景)或特定实例(例如, 紧急按钮上有红色字母)。在我们看了如何 为了命名类和实例,在第 27.3 节 “资源规范行”中,我们将讨论选项 数据库确实有效。
27.1. 如何命名小部件类
例如,假设这是一个新的 已创建的小组件类。这可能是最好的 让新的小部件类从类继承,所以对 Tkinter 来说,它就像一个框架, 您可以排列其他小部件,例如标签, 条目和其中的按钮。JukeboxFrame
您可以通过传递名称来设置新小部件的类名 作为父级的选项 新类的构造函数中的构造函数。这是一个 定义新类的代码片段:class_
class Jukebox(tk.Frame):def __init__(self, master):'''Constructor for the Jukebox class'''tk.Frame.__init__(self, master, class_='Jukebox')self.__createWidgets()
27.2. 如何命名小部件实例
为特定小部件提供实例名称 应用程序,设置该小部件的选项 到包含名称的字符串。name
下面是实例名称的示例。假设你是 在应用程序中创建多个按钮,并且您希望 实例名称为 .对构造函数的调用可能会 看起来像这样:panicButton
self.panic = tk.Button(self, name='panicButton', text='Panic', ...)
27.3. 资源规范行
选项文件中的每一行指定一个或 一个或多个应用程序中的更多选项,并且具有 这些格式:
app option-pattern: value
option-pattern: value
仅当名称为 应用程序匹配 ;第二种形式 设置所有应用程序的选项。app
例如,如果您的应用程序称为 xparrot,则表单的行
xparrot*background: LimeGreen
将 Xparrot 应用程序中的所有选项设置为 Lime 绿。(使用选项上的选项 启动应用程序时的命令行以设置 名称到 .)background-name'xparrot'
该部分具有以下语法:option-pattern
{{*|.}name}...option
也就是说,每个都是一个 零个或多个名称的列表,每个名称前面都有 星号或句点。该系列中的姓氏是 您正在设置的选项的名称。其余的每个人都 的名称可以是:option-pattern
-
小部件类的名称(大写),或
-
实例的名称(小写)。
期权模式的工作方式有点复杂。 让我们从一个简单的例子开始:
*font: times 24
这一行说所有选项 应默认为 24 点倍。这称为松散绑定符号,表示此选项模式适用于任何应用程序中任何位置的任何选项。 比较此示例:font*font
*Listbox.font: lucidatypewriter 14
和之间的周期称为紧 绑定符号,这意味着这个规则 仅适用于微件的选项 在课堂上.ListboxfontfontListbox
再举一个例子,假设你的 xparrot 应用程序有 类的小部件的实例。在 为了为所有设置默认背景颜色 该类的小部件,您可以 在选项文件中放一行,如下所示:JukeboxJukebox
xparrot*Jukebox*background: PapayaWhip
和之间的松散绑定 () 符号使 规则适用于以下任何选项 . 比较此选项行:*JukeboxbackgroundbackgroundJukebox
xparrot*Jukebox.background: NavajoWhite
此规则将应用于构成小部件本身的框架,但由于 紧密绑定符号 它不适用于以下小部件 位于小部件内。JukeboxJukebox
在下一节中,我们将讨论 Tkinter 如何计算 如果存在,请准确列出要使用的选项值 适用的多个资源规范行。
27.4. 资源匹配规则
创建小部件时,未指定 某些选项和两个或多个资源的值 规格适用于该选项,最具体 一个适用。
例如,假设您的选项文件包含这两个 线:
*background: LimeGreen
*Listbox*background: FloralWhite
这两个规范都适用于小部件中的选项,但 第二个更具体,所以它会赢。backgroundListbox
通常,资源规范中的名称是 序列 N 1, N 2, N3, ..., o 其中每个 ni 是一个 类或实例名称。类名的排序自 从最高到最低级别,O 是选项的名称。
但是,当 Tkinter 创建一个小部件时,它所拥有的只是 该小组件的类名和实例名。
以下是资源的优先规则 规格:
-
选项的名称必须与 的
o部分匹配。 例如,如果规则是option-patternxparrot*indicatoron: 0这将仅匹配名为 的选项。
indicatoron -
紧密绑定运算符()更多 比松散绑定运算符 () 特定。例如,一行比一行更具体 为。
.**Button.font*Button*font -
对实例的引用比 对类的引用。例如,如果您有 按钮的实例名称为 ,规则比 的规则。
panicButton*panicButton*font*Button*font -
具有更多级别的规则更具体。为 示例,IS 的规则 比 的规则更具体。
*Button*font*font -
如果两个规则具有相同数量的级别,则名称 列表中较早的比较较晚的更具体 名字。例如,规则比规则更具体 为。
xparrot*font*Button*font
相关文章:
【Tkinter系列13/15】标准化外观和选项数据库
27. 标准化外观和选项数据库 可以轻松地将颜色、字体和其他选项应用于 小部件,当您创建它们时。然而 如果您希望很多小部件具有相同的 背景颜色或字体,指定每个都很乏味 每次选项,以及 让用户覆盖您的选择是很好的 他们最喜欢的配色方案、字…...
springboot 集成dubbo
上一篇我们一起认识了Dubbo与RPC,今天我们就来一起学习如何使用Dubbo,并将Dubbo集成到Spring Boot的项目中。我们来看下今天要使用到的软件及版本: 软件 版本 说明 Java 11 Spring Boot 2.7.13 Spring Boot 3.0版本开始,最…...
基于YOLOV8模型和CCPD数据集的车牌目标检测系统(PyTorch+Pyside6+YOLOv8模型)
摘要:基于YOLOV8模型和CCPD数据集的车牌目标检测系统可用于日常生活中检测与定位车牌目标,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算…...
net user安全隐患
net user test 123456 /add #添加一个test账户,密码是123456net user test /delete #删除test账户windows administrator权限下删除其他账户,难道不需要知道该账户的密码吗? 以前没太注意,但是这算不算是一个漏洞呢? 另外&#…...
深入剖析Kubernetes之资源模型和GPU 管理
文章目录 资源模型QoS 模型GPU 管理 资源模型 在 Kubernetes 里,Pod 是最小的原子调度单位。这也就意味着,所有跟调度和资源管理相关的属性都应该是属于 Pod 对象的字段。而这其中最重要的部分,就是 Pod 的 CPU 和内存配置,如下所…...
Springboot整合HBase
Springboot整合HBase数据库 1、添加依赖 <!-- Spring Boot HBase 依赖 --> <dependency><groupId>com.spring4all</groupId><artifactId>spring-boot-starter-hbase</artifactId> </dependency> <dependency><groupId>…...
在不同操作系统上如何安装符号表提取工具(eu-strip)
前言 C开发的小伙伴都知道符号表在调试和解决崩溃时扮演着非常重要的角色,那么如何提取和保存发布应用程序的符号表就变得非常重要。今天就来聊一下如何在不同的操作系统上使用eu-strip提取应用程序中的符号表信息。 正文 问题 如何在不同操作系统上安装符号表提…...
钡铼R40边缘计算网关与华为云合作,促进物联网传感器数据共享与应用
场景说明 微型气象是不可预测的,基本上不能通过人工手段来分析其变化,因此必须运用新技术,对气象进行实时监测,以便采取相应的措施来避免或解决事故的发生。而常规气象环境数据采集容易造成数据损失、人力成本高、数据安全性差、…...
图表背后的故事:数据可视化的威力与影响
数据可视化现在在市场上重不重要?这已经不再是一个简单的问题,而是一个不可忽视的现实。随着信息时代的来临,数据已经成为企业和组织的核心资产,而数据可视化则成为释放数据价值的重要工具。 在当今竞争激烈的商业环境中…...
C++ 信号处理
信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 CtrlC 产生中断。 有些信号不能被程序捕获,但是下表所列信号可以在程序中捕获,并可以基于信号采取适当的动作。这些…...
电源模块的降额曲线
大家好,这里是大话硬件。 今天想写这篇文章来分享在前段时间了解的一个知识点——电源模块的降额曲线。 为什么要写这个呢?对于专门做电源的同学来说,肯定觉得很简单。但是对于一个非电源行业的人来说,曲线应该如何解读ÿ…...
uni-app 之 安装uView,安装scss/sass编译
uni-app 之 安装uView,安装scss/sass编译 image.png image.png image.png 点击HBuilder X 顶部,工具,插件安装,安装新插件 image.png image.png 安装成功! 注意,一定要先登录才可以安装 image.png 1. 引…...
CSS中如何隐藏元素但保留其占位空间(display:nonevsvisibility:hidden)?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 隐藏元素但保留占位空间⭐ display: none;⭐ visibility: hidden;⭐ 总结⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&a…...
【rust/egui】(八)使用panels给你的应用划分功能区块
说在前面 rust新手,egui没啥找到啥教程,这里自己记录下学习过程环境:windows11 22H2rust版本:rustc 1.71.1egui版本:0.22.0eframe版本:0.22.0上一篇:这里 panel是啥 panel是ui上的一块区域&…...
QT实现任意阶贝塞尔曲线绘制
bezier曲线在编程中的难点在于求取曲线的系数,如果系数确定了那么就可以用微小的直线段画出曲线。bezier曲线的系数也就是bernstein系数,此系数的性质可以自行百度,我们在这里是利用bernstein系数的递推性质求取: 简单举例 两个…...
【Java 基础篇】Java 数组使用详解:从零基础到数组专家
如果你正在学习编程,那么数组是一个不可或缺的重要概念。数组是一种数据结构,用于存储一组相同类型的数据。在 Java 编程中,数组扮演着非常重要的角色,可以帮助你组织、访问和操作数据。在本篇博客中,我们将从零基础开…...
基于Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作
文献计量学是指用数学和统计学的方法,定量地分析一切知识载体的交叉科学。它是集数学、统计学、文献学为一体,注重量化的综合性知识体系。特别是,信息可视化技术手段和方法的运用,可直观的展示主题的研究发展历程、研究现状、研究…...
docker_python-django_uwsgi_nginx_浏览器_网络访问映过程
介绍 1:介绍docker中使用uwsgi服务器启动django 设置了uwsgi的脚本 2:介绍启动uwsgi后,使用本地浏览器去访问这个容器中的端口 3:分别使用了3个ip地址去访问这个服务 1:使用本地连接*2 2:使用windows系统里…...
Python爬取天气数据并进行分析与预测
随着全球气候的不断变化,对于天气数据的获取、分析和预测显得越来越重要。本文将介绍如何使用Python编写一个简单而强大的天气数据爬虫,并结合相关库实现对历史和当前天气数据进行分析以及未来趋势预测。 1 、数据源选择 选择可靠丰富的公开API或网站作…...
基础算法-递推算法-学习
现象: 基础算法-递推算法-学习 方法: 这就是一种递推的算法思想。递推思想的核心就是从已知条件出发,逐步推算出问题的解 最常见案例: 一:正向递推案例: 弹力球回弹问题: * 弹力球从100米高…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
