簡體   English   中英

Python,tkinter:如何在按下時更改按鈕的顏色?

[英]Python, tkinter: How to change color of button on press?

好的,所以我有這個生成按鈕網格的代碼:

def click():

    squares[-1][y].configure(bg='blue')

def game(width,height):

    global squares
    squares = []

    global y

    for x in range(width):

        squares.append([0] * height)

        for y in range(height):

            squares[-1][y] = Button(gameWindow,command=click)
            squares[-1][y].grid(column = x, row = (y + 1), sticky =(N+S+E+W))

    for x in range(width):

        Grid.columnconfigure(gameWindow, x, weight = 1)

    for y in range(height):

        Grid.rowconfigure(gameWindow, (y + 1), weight = 1)

    gameWindow.mainloop()

game(8,8)    

我可以通過執行以下操作來配置特定按鈕 (1,1):

squares[1][1].configure(bg='blue')

但是當我嘗試配置一個按鈕時,它會更改右下角的按鈕。

任何幫助將不勝感激,提前致謝。

你有循環

for y in range(height):

所以在這個循環之后y等於height-1

當你點擊按鈕時,它使用squares[-1][y]y = height-1所以你總是使用squares[-1][height-1]

您必須使用參數 - 按鈕編號 - 使用lambda分配按鈕功能。
但是如果你在里面使用lambda for那么你不能直接做lambda:click(y)
但你需要lambda arg=y:click(arg)

 Button(gameWindow, command=lambda arg=y:click(arg))

函數必須得到這個參數並使用它

 def click(arg): 
      squares[-1][arg].config(bg='blue')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM