【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米高…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
