如何在 tkinter ttk 中获得无边框效果?

how get no border effect in tkinter ttk?

为了在tkinter tk中获得按钮无边框效果我曾经设置borderwidth=0。按钮将合并到背景中。但我无法在 tkinter ttk 中获得相同的效果。我设置 borderwidth=0 样式。按钮始终具有边框宽度。不知道为什么?

您可以通过使用 ttk 样式将按钮浮雕设置为 flat 或将 borderwidth 设置为 0 来实现。然而,一些ttk主题没有考虑这些样式设置,其中之一是Windows中的默认主题。将主题设置为 'clam' 或 'alt' 应该可以解决您的问题。

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

b1 = tk.Button(root, text='tk.Button', borderwidth=0)
b1.pack()

s = ttk.Style(root)
s.theme_use('clam')
s.configure('flat.TButton', borderwidth=0)
# s.configure('flat.TButton', relief='flat') gives the same result

b2 = ttk.Button(root, style='flat.TButton', text='ttk.Button')
b2.pack()

root.mainloop()

您无法删除 windows 或 osx 上的边框。在这些平台上使用 ttk 按钮的全部意义在于获取本机小部件。如果你想要一个没有边框的按钮,使用标准的 tk 按钮。