如何识别或更改for循环创建的标签?

时间:2018-12-16 23:50:30

标签: python tkinter

我想更改由for loop创建的某些标签上的配置,但不知道如何调用标签。我的代码如下:

hand_info_labels = [
    'Hand Info', str(self.sb), 'Players',
     str(self.sb), 'Pre-flop', str(self.sb),
     'Flop', str(self.sb), 'Turn',
      str(self.sb), 'River', str(self.sb)]

for label in hand_info_labels:
    ttk.Label(
        hh_lblfrm, text=label).grid(
        column=0, sticky=tk.W)

如何称呼这些标签?我在想类似hand_info_labels['Hand Info'].config(font=("Courier", 44))

1 个答案:

答案 0 :(得分:1)

如果所有标签都不相同,最简单的方法是将每个标签小部件保存到dict,然后可以使用该dict指定任何标签。

import tkinter as tk
from tkinter import ttk
root = tk.Tk()

hh_lblfrm = tk.Frame(root)
hh_lblfrm.grid()

hand_info_labels = ['Hand Info', 'Players', 'Turn', 'River']

label_dict = {}
for row, label in enumerate(hand_info_labels):
    widget = ttk.Label(hh_lblfrm, text=label)
    widget.grid(row=row, column=0, sticky=tk.W)
    label_dict[label] = widget

# Test to change config on one of the labels
label_dict['Players'].config(background='salmon')

如果要更改标签列表,可以使用循环:

# Test to change config on list of labels
widgets_to_change = ['Hand Info', 'Turn']
for widget in widgets_to_change:
    label_dict[widget].config(background='khaki')

如果某些标签相同,则可以使用列表代替,但是您必须记住每个标签的索引。