私はこれに対する答えを探していましたが、例は見つかりませんでした。ウィジェットを動的に作成した後でウィジェットを設定できますか?
複数のボタンやラベル、または同じ変数名を持つtkinterの任意のウィジェットを作成できるかどうかを知りたいのであれば、そのウィジェットを作成した後で直接ターゲティングすることができます。
ここに、同じ変数名を持つ5つのボタンを作成するコードの例を示します。ボタンを押すと、そのボタンにテキストが印刷されます。
import tkinter as tk
btn_names = ["1st Button", "2nd Button", "3rd Button", "4th Button", "5th Button"]
class MyButton(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
self.createButtons()
def createButtons(self):
row_count = 0
for n in range(5):
someButton = tk.Button(self.parent, text=btn_names[n], command= lambda t=btn_names[n]: self.getText(t))
someButton.grid(row = row_count, column = 0)
row_count += 1
def getText(self, text):
print(text)
if __name__ == "__main__":
root = tk.Tk()
myApp = MyButton(root)
root.mainloop()
ここでわからないことは、上記のボタンにも変更を加えることができるかどうかです。ボタンの背景と前景色を変更したいのですが、編集したいボタンをターゲットにする方法がありません。
私はこれを行うことはできません。すべてのボタンがsomeButton
を
someButton.config(background = "black", foreground = "white")
を命名しているよう。
作成後にこのマナーで作成されたウィジェットを編集することは可能ですか?
ああ、これは非常に便利です。私はあなたがラムダにそれ以上の変数を加えることができるのか分からなかった。あなたの答えをありがとう私はこれが私のニーズのために働くと信じています。 –