gpt4 book ai didi

tkinter - 如何知道TTK小部件的所有样式选项

转载 作者:行者123 更新时间:2023-12-04 04:15:19 27 4
gpt4 key购买 nike

这个问题几乎使我发狂。我是新手,不了解tck / tk。我已经在互联网上进行了仔细的搜索,但没有找到一个好的解决方案。

例如,我使用

import tkinter as tk
from tkinter import ttk
newBT = ttk.LabelFrame(width=100, height=100)


然后,我需要设置框架样式。 tk.LabelFrame有前景。但是,我没有在 NMTtck/tk引用中为ttk.LabelFrame找到这种样式选项。然后我不得不猜测,就像下面

s = ttk.Style()
s.configure('TLabelframe', foreground='red')


但这不起作用, the right thing

s.configure('TLabelframe.Label', foreground='red')


因此,我的问题是,如何找出ttk小部件具有的所有样式选项。有没有像

s.getAllOptions('TLabelframe')


然后输出是这样的

['background', 'foreground', 'padding', 'border', ...]


谢谢!

最佳答案

我发现自己的问题很有趣,因为我曾经问过自己同样的问题,但直到现在还没有时间解决。我已经写了一个叫做stylename_elements_options(stylename)的函数来做到这一点。在这里分享。希望它可以使您(尽管延迟了6个月)和任何tkinter用户都可以从中受益。

脚本:

import tkinter as tk
import tkinter.ttk as ttk

def stylename_elements_options(stylename):
'''Function to expose the options of every element associated to a widget
stylename.'''
try:
# Get widget elements
style = ttk.Style()
layout = str(style.layout(stylename))
print('Stylename = {}'.format(stylename))
print('Layout = {}'.format(layout))
elements=[]
for n, x in enumerate(layout):
if x=='(':
element=""
for y in layout[n+2:]:
if y != ',':
element=element+str(y)
else:
elements.append(element[:-1])
break
print('\nElement(s) = {}\n'.format(elements))

# Get options of widget elements
for element in elements:
print('{0:30} options: {1}'.format(
element, style.element_options(element)))

except tk.TclError:
print('_tkinter.TclError: "{0}" in function'
'widget_elements_options({0}) is not a regonised stylename.'
.format(stylename))

stylename_elements_options('my.Vertical.TScrollbar')

关于tkinter - 如何知道TTK小部件的所有样式选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45389166/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com