亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從動態創建的按鈕中獲取文本?

如何從動態創建的按鈕中獲取文本?

鳳凰求蠱 2022-01-05 11:08:43
我想要我的按鈕,當我點擊它們時返回它們的文本屬性。我使用了 for 循環來動態創建按鈕,但是當我這樣做時, btn 變量卡在最后創建的按鈕上,這意味著每個按鈕都返回相同的文本值。listWords = ("Car","Train","Bus","Bike")var = 0def getdef():    print(btn['text'])for word in listWords:    btn = Button(window, text=word,command=getdef)    btn.grid(column=var, row=0)    var = var + 1此代碼生成 4 個按鈕:按鈕 圖像但是,無論我按什么按鈕 btn['text'] 都會返回 Bike。我希望輸出是按鈕本身的輸出,例如當我單擊汽車時,我希望 btn['text'] 返回汽車。
查看完整描述

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()


查看完整回答
反對 回復 2022-01-05
  • 1 回答
  • 0 關注
  • 267 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號