Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改循环中创建的tkinter按钮的颜色?_Python_Macos_Tkinter - Fatal编程技术网

Python 更改循环中创建的tkinter按钮的颜色?

Python 更改循环中创建的tkinter按钮的颜色?,python,macos,tkinter,Python,Macos,Tkinter,我使用以下代码创建了一个按钮网格: for x in range(10): for y in range(10): btn = Button(frame, command=button_click(x, y)) btn.config(height=1, width=1) btn.grid(column=x, row=y, sticky='nsew') 我想写一个函数按钮,点击按钮后将按钮变成不同的颜色,但由于我已经创建了一个循环中的所有按

我使用以下代码创建了一个按钮网格:

for x in range(10):
    for y in range(10):
        btn = Button(frame, command=button_click(x, y))
        btn.config(height=1, width=1)
        btn.grid(column=x, row=y, sticky='nsew')
我想写一个函数按钮,点击按钮后将按钮变成不同的颜色,但由于我已经创建了一个循环中的所有按钮,我没有每个按钮的特定变量名,所以我不确定如何最好地执行?我不想只创建按钮就写100行代码。。我想也许我可以通过将按钮的坐标传递给函数并以某种方式使用这些信息来实现这一点,但我找不到解决方案。任何关于如何做到这一点或我可以采取的替代方法的建议都将不胜感激

试试这个:

import tkinter as tk
import random

def button_click(btn):
    color = random.choice(['red', 'blue', 'green'])
    btn.config(bg=color)
    print(btn)

window = tk.Tk()

for x in range(10):
    for y in range(10):
        btn = tk.Button(window)    
        btn.config(text=f'{x}{y}',height=1, width=1, command=lambda button=btn: button_click(button))
        btn.grid(column=x, row=y, sticky='nsew')

window.mainloop()
更新:框架上的按钮

import tkinter as tk
import random

def button_click(btn):
    color = random.choice(['red', 'blue', 'green'])
    btn.config(bg=color)
    print(btn)

window = tk.Tk()

frame = tk.Frame(window)
frame.pack()

for x in range(10):
    for y in range(10):
        btn = tk.Button(frame)    
        btn.config(text=f'{x}{y}',height=1, width=1, command=lambda button=btn: button_click(button))
        btn.grid(column=x, row=y, sticky='nsew')

window.mainloop()

当我使用这个按钮时,点击似乎只改变了最后一个按钮,我假设这是最近分配给变量btn的按钮?但是离我要找的东西更近了@艾达克:不,它会改变我点击的按钮。请查收again@aidakemind当你点击按钮时,你有颜色变化吗?是的,但只有最后一个按钮。也许是因为我把按钮放在了一个相框上sizing@aidakemind我不知道,除非你把你的全部密码都发出去。