如何在Python ttk中证明按钮中的文本合理

时间:2018-09-13 13:00:27

标签: python tkinter ttk

我正在尝试对齐(对齐)按钮中的文本,让我们在左边说。 我找到了一些有用的代码here,基于此,我在下面创建了代码来检查标签的行为。

import tkinter as tk
import tkinter.ttk as ttk


app = tk.Tk()
style = ttk.Style()
style.layout(
        'Left1.TButton',[
            ('Button.button', None),
            ('Button.focus', {'children': [                
                ('Button.padding', {'children': [
                    ('Button.label', {'side' : 'left'}
                     )]}
                 )]}
             )]
        )

print("TButton.label->justify: ", style.lookup('TButton.label', 'justify'))
print("TButton.label->side: ", style.lookup('TButton.label', 'side'))

style.configure('TButton.label', justify='left')
style.configure('TButton.label', side='left')

print("TButton.label->justify: ", style.lookup('TButton.label', 'justify'))
print("TButton.label->side: ", style.lookup('TButton.label', 'side'))


ttk.Button(text="TButton", width=100, style="TButton").pack()
ttk.Button(text="Lef1.TButton", width=100, style="Left1.TButton").pack()

print("TButton.label options:\n", style.element_options('TButton.label'))

问题是标签上没有任何影响。它停留在按钮的中央。 更有趣的是最后一行。 输出为:

TButton.label options:
 ('compound', 'space', 'text', 'font', 'foreground', 'underline', 'width', 'anchor', 'justify', 'wraplength', 'embossed', 'image', 'stipple', 'background')

但是,如果我尝试设置'anchor',则会出现异常。我知道ttk中没有此功能,但是为什么在这里显示呢?

1 个答案:

答案 0 :(得分:0)

我刚刚使用了以下样式并且它正在工作 - 这将 anchor='center' 配置应用于我的所有按钮,但是您可以为每个按钮创建自己的样式,其中您只需将 'TButton' 更改为 '{插入您的样式名称}.TButton'(更多关于 https://www.pythontutorial.net/tkinter/ttk-style/ - 学习 ttk 样式的被低估的资源)。

无论如何,这是代码:

style = ttk.Style()
style.theme_create( "button-center", parent="alt", settings={
        "TButton": {"configure": {"anchor": "center"}}} )

# Now just create the button itself

style.theme_use("button-center")
btn = ttk.Button({the_frame_it_belongs_to})
btn.configure(text='BUTTON', width='15')
btn.grid(column='0', row='0')