1 回答

TA貢獻1712條經驗 獲得超3個贊
您可以使用lambdaincommand=用參數分配函數 - word- 并且函數必須獲取此參數 -def get_text(text)
import tkinter as tk
def get_text(text):
print(text)
list_words = ("Car","Train","Bus","Bike")
var = 0
root = tk.Tk()
for word in list_words:
btn = tk.Button(root, text=word, command=lambda txt=word:get_text(txt))
btn.grid(column=var, row=0)
var += 1
root.mainloop()
而不是word您可以發送btn到功能,以便您可以從按鈕獲取文本,但也可以更改按鈕上的文本或更改其顏色等。
但它需要一點不同的方法
import tkinter as tk
def get_widget(widget):
print(widget["text"])
widget["text"] = "DONE"
widget["bg"] = "green"
list_words = ("Car","Train","Bus","Bike")
var = 0
root = tk.Tk()
for word in list_words:
btn = tk.Button(root, text=word)
btn["command"] = lambda widget=btn:get_widget(widget)
btn.grid(column=var, row=0)
var += 1
root.mainloop()
您還可以使用bind('<Button-1>', callback)assing click to Button 或其他 Windget,它將運行帶有參數的函數,該參數event可以訪問單擊的小部件 -event.widget
import tkinter as tk
def get_event(event):
print(event.widget["text"])
event.widget["text"] = "DONE"
event.widget["bg"] = "green"
list_words = ("Car","Train","Bus","Bike")
var = 0
root = tk.Tk()
for word in list_words:
btn = tk.Button(root, text=word)
btn.bind('<Button-1>', get_event)
btn.grid(column=var, row=0)
var += 1
root.mainloop()
添加回答
舉報