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

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

python tkinter 如何更改特定網格空間上的小部件標簽?

python tkinter 如何更改特定網格空間上的小部件標簽?

慕俠2389804 2023-01-04 16:36:19
我有一個 3x3 的按鈕網格,所有這些按鈕都綁定到相同的事件函數。此函數根據單擊的按鈕更改特定按鈕的標簽。我希望能夠通過查看按鈕在網格上的位置(即行值和列值)來選擇將影響哪些按鈕。例如,我希望能夠說“考慮到點擊的按鈕是(第 1 行,第 2 列),我想更改(第 2 行,第 0 列)和(第 1 行,第 1 列)按鈕的標簽.我知道如何找到被點擊按鈕的行和列:import tkinterdef click(event):    space = event.widget    space_label = space['text']    row = space.grid_info()['row'] #get the row of clicked button    column = space.grid_info()['column'] #get the column of clicked buttonboard = tkinter.Tk()for i in range(0,9): #creates the 3x3 grid of buttons    button = tkinter.Button(text = "0")    if i in range(0,3):        r = 0    elif i in range(3,6):        r = 1    else:        r = 2    button.grid(row = r, column = i%3)    button.bind("<Button-1>",click)board.mainloop()但是我無法弄清楚如何只給定網格的一行和一列來訪問按鈕的標簽。PS 編碼新手,抱歉,如果這很明顯,我環顧四周但找不到任何足夠相似的問題。
查看完整描述

1 回答

?
UYOU

TA貢獻1878條經驗 獲得超4個贊

如果您打算在創建一個小部件并將其添加到您的界面后對其進行任何操作,最好保留一個參考。


這是對您的代碼的修改,它創建了一個字典button_dict來存儲您的每個按鈕。鍵是元組(row,column)。我將button_dict作為附加輸入添加到您的click函數中,并修改了按鈕綁定以使用 包含這個新輸入lambda。


import tkinter


def click(event,button_dict):

    space = event.widget

    space_label = space['text']

    row = space.grid_info()['row'] #get the row of clicked button

    column = space.grid_info()['column'] #get the column of clicked button


    button = button_dict[(row,column)] # Retrieve our button using the row/col

    print(button['text']) # Print button text for demonstration


board = tkinter.Tk()


button_dict = {} # Store your button references here


for i in range(0,9): #creates the 3x3 grid of buttons


    button = tkinter.Button(text = i) # Changed the text for demonstration


    if i in range(0,3):

        r = 0

    elif i in range(3,6):

        r = 1

    else:

        r = 2


    button.grid(row = r, column = i%3)

    button.bind("<Button-1>",lambda event: click(event,button_dict))


    button_dict[(r,i%3)] = button # Add reference to your button dictionary


board.mainloop()

如果您只對按下的按鈕感興趣,您可以簡單地訪問該event.widget屬性。從你的例子來看,聽起來你想修改每個事件的任意數量的按鈕,所以我認為字典會給你更多的通用性。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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