使主题 TK 按钮具有边框

Making themed TK button have a border

使用 Linux 上的默认主题,我无法让按钮有边框。这是我的尝试:

from tkinter import *
from tkinter.ttk import *

tk = Tk()

style = Style()
style.configure('TButton.border', background='red')

button = Button(tk, text='Hello')
button.pack()

mainloop()

我发现主题化非常困难,因为不清楚我可以更改什么。有时更改似乎无济于事。

这取决于您使用的主题;并非所有主题都将所有小部件与其可能拥有的所有元素相关联,并且一些(例如,OSX 原生主题,aqua)确实非常严格地控制许多元素的外观和感觉(因为在这种情况下,主题引擎委托给本机绘图代码)。您使用的主题完全有可能根本不允许使用红色边框。

尝试切换到不同的主题...

ttk.Style().theme_use('clam')

简单的建议...如果你真的想要一个边框。理解应该不尽如人意。

import Tkinter as tk
root = tk.Tk()

def nothing(event=None):
    print "click"

bgbutton= tk.Button(root, )
bgbutton.pack()
bgbutton.configure(relief=tk.GROOVE, borderwidth=5, background="#2244FF", activebackground="#FF0000", highlightcolor="#00FF00")
button= tk.Button(bgbutton, text="Glance at my border", command=nothing)
button.pack()

button.configure(relief=tk.GROOVE, borderwidth=2)

root.mainloop()