女人比有多少样式:有多少 /有哪些不同类型的ttk样式可用

我最近一直在做一些 GUI,发现按钮看起来相当平淡,所以我读了一些关于使用 ttk 使外观更好的教程,并得到了以下内容:

from tkinter import ttk
from tkinter.ttk import *
root = tkinter.Tk()
style = ttk.Style()
style.configure("BW.TLabel")
btn = ttk.Button(text="Test")
btn.pack()
root.mainloop()

是的,它看起来更好,但我想知道是否有不同的 ttk 样式,如果有,有多少以及在哪里检查它们

8

首先是一些术语。Ttk 是 Tk 的主题层。它由一组主题组成,这些主题由应用于小部件的样式组成。样式由一个或多个元素引擎提供的元素组成。

主题层的目的是使 Tk 更好地适应用户桌面的原生外观和感觉,而不是允许程序员创建各种可怕的自定义小部件。

因此,在 Windows 上,默认主题是可以使用 Visual Styles API 的主题。这就是在 Windows XP 及更高版本上绘制按钮边缘和背景等的东西。由于 Tk 在创建时支持旧版本的 Windows,因此我们也有一个支持 GDI 绘图元素(winnative)的主题。对于在 MacOS 上运行的 Tk,有一个使用本机主题的元素引擎,而在 X11 上,我们必须使用 Tk 绘图

所以你可用的主题取决于你所在的平台。不同的主题提供不同数量的可配置性。那些使用外部 API (vsapi,winnative 或 aqua) 提供的元素并不能真正让你自定义太多。但是,主题也可以从默认 (Tk drawn) 元素引擎导入元素或使用images作为视觉元素。图像元素引擎允许你完全改变它的整个外观 widce (

总的来说,重点是减少开发人员的工作,使应用程序看起来像原生的,而不是允许最终的可定制性。

要查找可用的主题,请执行以下操作:

>>> ttk.Style().theme_names()
('clam', 'alt', 'default', 'classic')

这是在 Linux 上。在 Windows 7 上也会有 winnative,xpnative 和 vista。最初的主题是根据运行时的平台选择的,除非应用程序选择了备用主题。

在主题中定义的样式都链接到小部件。没有提供枚举所有样式的方法。您可以遍历所有 ttk 小部件,并查看它们的winfo_class()方法结果,因为它显示了该小部件使用的主题样式。

2

ttk 的内置样式不多,我相信每种类型的小部件只有一种样式。ttk 允许您做的是定义自己的样式,这些样式源自内置,调整您想要的不同位,然后将该样式轻松应用于所有小部件。

This是一个很好的参考。但是例如,您想更改所有 ttk 按钮,以便它们使用红色字体,您可以执行以下操作:

import tkinter as tk
from tkinter import ttk
from tkinter.ttk import *
root = tk.Tk()
style = ttk.Style()
style.configure("TButton", foreground="red")
btn = ttk.Button(text="Test")
btn.pack()
root.mainloop()

那么每个 ttk 按钮将被设置为红色前景。

创建一个新的风格,你会这样做:

import tkinter as tk
from tkinter import ttk
from tkinter.ttk import *
root = tk.Tk()
style = ttk.Style()
style.configure("Mine.TButton", foreground="red")
btn = ttk.Button(text="Test")
btn.pack()
btn2 = ttk.Button(text="Test", style="Mine.TButton")
btn2.pack()
root.mainloop()

所以第一个按钮使用默认的按钮样式,但我派生一个名为 Mine.TButton 的新按钮样式(.TButton 意味着它复制 TButton 的现有样式,然后更改您在配置调用中指定的内容)

,因此使用该样式创建的任何按钮看起来都一样。

2
from ttkthemes import themed_tk as tk #For set Themes
from tkinter import ttk               #ttk = themed tkinter
#Creating themed tkinter window and saving it in root variable
root = tk.ThemedTk() 
# Get a list of all themes that can be set
root.get_themes()
#Setting theme named radiance
root.set_theme("radiance")

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(472)
电脑电源线接法:如何检测笔记本电脑电源线何时断开
上一篇
电脑浏览器打不开网页:在默认浏览器中打开网页(open webpage)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(86条)