Python Tkinter:按下时更改按钮背景
我知道我应该使用Python Tkinter:按下时更改按钮背景,python,tkinter,Python,Tkinter,我知道我应该使用bttn['text']='text',但我正在为创建按钮。我想在按下按钮时将其颜色更改为红色 示例代码: from tkinter import * root = Tk() btn = [i for i in range(10)] for i in range(len(btn)): b = Button(root, text=str(i), command=lambda c=i: print(i)) b.pack() root.mainloop() 我
bttn['text']='text'
,但我正在为创建按钮。我想在按下按钮时将其颜色更改为红色
示例代码:
from tkinter import *
root = Tk()
btn = [i for i in range(10)]
for i in range(len(btn)):
b = Button(root, text=str(i), command=lambda c=i: print(i))
b.pack()
root.mainloop()
我需要替换什么来代替打印(I)?为此,需要将按钮对象“b”传递到回调函数中。为此,需要在下一行设置命令,以便“b”对象可用。像这样:
from tkinter import *
root = Tk()
def change_to_red(bttn):
bttn.config(bg='red', activebackground='red') # same as bttn['bg'] = 'red'; bttn['activebackground'] = 'red'
print(bttn['text'])
btn = [i for i in range(10)]
for i in range(len(btn)):
b = Button(root, text=str(i), width=6)
b.config(command=lambda c=b: change_to_red(c))
b.pack()
root.mainloop()
但实际上,这将是一个学习子类的好地方。您可以修改tkinter的按钮,使其成为您自己的按钮类型,除正常操作外,还可以执行您想要的操作:
import tkinter as tk
class Desync192Button(tk.Button):
def __init__(self, master=None, **kwargs):
self.command = kwargs.pop('command', None)
super().__init__(master, command=self.on_click, **kwargs)
def on_click(self):
self.config(bg='red', activebackground='red')
if self.command: self.command()
# demo:
root = tk.Tk()
for i in range(10):
b = Desync192Button(root, text=i, width=6, command=lambda c=i: print(c))
b.pack()
root.mainloop()
您希望按钮在单击后永远变为红色,还是仅在单击后恢复正常颜色?