我正在 tkinter 中創建一個 GUI,并嘗試使用串列理解來創建按鈕。但是,我很難讓串列理解實際上用“btn_list”中的名稱替換“btn”。如果有人知道這樣做的聰明方法,我將不勝感激。
start_btn, pause_btn, reset_btn, stat_btn = (Button(),) * 4
btn_list = [start_btn, pause_btn, reset_btn, stat_btn]
[btn.grid(row=2, column=col) for col, btn in enumerate(btn_list)]
uj5u.com熱心網友回復:
當你這樣做時(Button(),) * 4,你會得到一個包含 4 次相同按鈕的元組。如果你想要 4 個不同的按鈕,你可以通過串列理解來做到這一點:
btn_list = [Button() for i in range(4)]
我沒有看到使用串列推導而不是常規 for 回圈來網格化它們的意義,因為它給了你一個無用的None.
uj5u.com熱心網友回復:
如果您改為在類中創建按鈕,并為串列理解中的每個專案添加啟動類,那應該可以作業。
import tkinter as tk
class CreateButton:
"""Create button class"""
def __init__(self, **kwargs):
self.button = tk.Button(**kwargs)
window = tk.Tk()
button_text = ["Test1", "Test2"]
buttons = [CreateButton(master=window, text=text, width=20) for text in button_text]
for button in buttons:
button.button.pack()
window.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/416042.html
標籤:
上一篇:tkinter網格布局和標簽高度
