LabelFrame 很模糊

LabelFrame is faint

这个简单的代码创建了一个带有 4 个标签的 LabelFrame。 frame的轮廓很模糊,改变borderwidth或color都没有效果。

import tkinter as tk
from tkinter import *

import tkinter.ttk as ttk
from tkinter.ttk import *

root = tk.Tk()
# create LabelFrame  
labelframe = LabelFrame(root, text="State data", borderwidth=5)
labelframe.pack( pady=5)

# add 4 labels 
Label(labelframe, text="State").pack()
Label(labelframe, text="Abbrev").pack()
Label(labelframe, text="Capital").pack()
Label(labelframe, text="Founded").pack()

tk.mainloop()

您是否为 relief 参数尝试过不同的值? SOLID 在我的机器上导致了一个非常...不模糊的结果:

通过这些设置获得:

# create LabelFrame
labelframe = LabelFrame(root, text="State data", borderwidth=5, relief=SOLID)
labelframe.pack(padx=5, pady=5)

更新:

对于Windows10以上设置还不够。在我的机器上也进行了验证。 Python 3.7 和 Python 3.8 受到影响。这似乎是 Windows 机器上使用的默认主题的问题。

因此您需要 fiddle 使用 Tkinter 样式:

import tkinter as tk
from tkinter import *
from tkinter import ttk

from tkinter.ttk import *

root = tk.Tk()
style = ttk.Style()

print(f"available themes: {', '.join(style.theme_names())}")
style.theme_use('alt')

labelframe = LabelFrame(root, text="State data", borderwidth=4, relief=SOLID)
labelframe.pack(padx=5, pady=5)

Label(labelframe, text="State").pack()
Label(labelframe, text="Abbrev").pack()
Label(labelframe, text="Capital").pack()
Label(labelframe, text="Founded").pack()

if __name__ == "__main__":
    print("starting")
    tk.mainloop()

该示例将可用主题打印到控制台。试试看,哪个最能满足您的需求。

主题 'alt' 的结果远非完美,但指向正确的方向:

有关样式的更多详细信息,我建议查阅手册中有关 theme_settings 的部分。