繁体   English   中英

使用 tkinter 按下按钮时,如何更改按钮的颜色?

[英]How can I change color of button when it pushed with tkinter?

我做了 100 个按钮,我想改变按下按钮的颜色。 我怎样才能做到这一点? 这是我的代码。

import tkinter as tk

def settingships():
    column = -1
    row = 0
    root = tk.Tk()
    root.title('set ships')
    root.geometry('470x310')
    for i in range(101):
        if i > 0:
            if i%10 == 1:
                row += 1 
                column = -1
            column += 1
            text=f'{i}'
            btn = tk.Button(root,text=text,command=collback(i)).grid(column=column,row=row)
    root.mainloop()


def collback(i):
    def nothing():
        btn.config(bg='#008000')

    return nothing

首先, i不在collback()中使用。 第二个btnnothing()中未定义。 您应该将btn传递给collback()

为此,您需要替换以下行:

btn = tk.Button(root,text=text,command=collback(i)).grid(column=column,row=row)

至:

btn = tk.Button(root, text=text)
btn.grid(column=column, row=row)
btn.config(command=collback(btn))

并修改collback()如下:

def collback(btn):
    def nothing():
        btn.config(bg='#008000')
    return nothing

或者简单地使用 lambda 替换collback()

btn.config(command=lambda b=btn: b.config(bg='#008000'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM