簡體   English   中英

更改 tkinter 中多個標簽的字體大小

[英]Changing font size for multiple labels in tkinter

我在 tkinter 中有一組 10 個標簽,我想更改其字體大小。 我知道存在更改每個 label 字體大小的選項,但我很想看看是否有一個優雅的解決方案來更改選定標簽組的字體大小。 現在,我只是硬編碼了它們的大小。

使用ttk小部件。 他們支持“主題”(又名“樣式”)。

您可以創建一個樣式,並將其應用於所有標簽。 (受 文檔啟發的示例)

style = ttk.Style()
style.configure(
    "BW.TLabel",
    foreground="black",
    background="white",
    font="Helvetica",
    fontsize=12
)

l1 = ttk.Label(text="Test", style="BW.TLabel")
l2 = ttk.Label(text="Test", style="BW.TLabel")

這是一個優雅的 oneliner,它將root (主窗口)中所有標簽的字體設置為字體大小 30

[wid.config(font=(None,30)) for wid in root.winfo_children() if isinstance(wid, Label) ]

在許多班輪中
您還可以遍歷主 window 中的所有小部件,過濾掉所有Label ,然后使用循環更改那里的屬性

# Iterate through all widgets of your main window / root
for wid in root.winfo_children():
    # check if it's a label
    if isinstance(wid, Label):
        wid.config(font=(None,30))

您可以將選項定義為字典並將此字典與每個小部件一起使用

import tkinter as tk

root = tk.Tk()

options = {'font': (None, 20)}

l = tk.Label(root, text="Label 1", **options)
l.pack()

l = tk.Label(root, text="Label 2", **options)
l.pack()

l = tk.Label(root, text="Label 3", **options)
l.pack()

root.mainloop()

如果您將標簽保留在列表中,那么您可以使用for -loop 來更改它們

import tkinter as tk

root = tk.Tk()

all_labels = []

l = tk.Label(root, text="Label 1")
l.pack()
all_labels.append(l)

l = tk.Label(root, text="Label 2")
l.pack()
all_labels.append(l)

l = tk.Label(root, text="Label 3")
l.pack()
all_labels.append(l)

for l in all_labels:
    l['font'] = (None, 20)

root.mainloop()

每個小部件都保留有關子小部件的信息,您可以使用它來查找所有標簽

import tkinter as tk

root = tk.Tk()

l = tk.Label(root, text="Label 1")
l.pack()

l = tk.Label(root, text="Label 2")
l.pack()

l = tk.Label(root, text="Label 3")
l.pack()

for widget in root.winfo_children():
    if isinstance(widget, tk.Label):
        widget['font'] = (None, 20)

root.mainloop()

在 Roland Smith 的回答中,您可以看到如何使用tkinter.ttk

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM