我目前正在嘗試用Python和tkinter創建一個戰艦遊戲。 我需要聲明100個按鈕(玩家可以觸發的每個點的一個按鈕),並且我發現我可以做到這一點,以便將它們放入10x10網格中,同時還通過變量buttons_dict存儲對它們的引用tkinter >>如何獲取按鈕引用?
from tkinter import *
from tkinter import ttk
root = Tk()
board_frame = ttk.Frame(root, padding=5)
board_frame.grid(column=0,row=0)
COORDS_LIST = []
buttons_dict = {}
for r in range(1,11):
for c in range(1,11):
coord = str(r)+"_"+str(c)
COORDS_LIST.append(coord)
buttons_dict[COORDS_LIST[-1]] = ttk.Button(board_frame, text="O", width="2")
buttons_dict[COORDS_LIST[-1]].grid(row=r,column=c)
root.mainloop()
此代碼創建100個完全按照我需要顯示的按鈕。當我想給每一個命令時,問題就開始了。我想要的是一個通用函數(我們可以稱它爲'fire_here'這個問題),每次按下其中一個按鈕時都會調用它,但是我需要它通過1或2個參數: 它可以是在創建按鈕時附加到COORDS_LIST的值,或者它可以是按鈕的「列」和「行」值。 那麼,我該怎麼做,或者如何獲得一個按鈕的行/列一旦放置?
所以當你有lambda x = c,y = r時,它會永久存儲這些x和y值? – RGS
@RSerrao - 是的,用於該功能。我上面展示的內容被認爲是更高級的Python編碼。它不應該是因爲這個概念很簡單。 'x = c'將'c'設置爲'lambda'的''x'參數的默認值。相同的概念適用於'y = r'。當函數被調用時,這些默認值被髮送到'fire_here'。 – iCodez
謝謝你!比我在事件和event.widget中找到的另一個解決方案更簡單... – RGS