当按下按钮时,如何在tkinter python中更改帧颜色?

当按下按钮时,如何在tkinter python中更改帧颜色?,python,user-interface,tkinter,frame,Python,User Interface,Tkinter,Frame,当我按下按钮时,有没有办法改变帧背景颜色?是的,有很多方法可以做到这一点,只需将frame['bg']设置为格式为'.\000000'的十六进制RGB值或设置为。下面是一个按钮,它将帧的背景色更改为“中海绿色”: import tkinter as tk def change_bg(widget): widget['bg'] = 'medium sea green' if __name__ == '__main__': root = tk.Tk() frame

当我按下按钮时,有没有办法改变帧背景颜色?

是的,有很多方法可以做到这一点,只需将
frame['bg']
设置为格式为
'.\000000'
的十六进制RGB值或设置为。下面是一个
按钮
,它将
帧的背景色更改为
“中海绿色”

import tkinter as tk


def change_bg(widget):
    widget['bg'] = 'medium sea green'


if __name__ == '__main__':
    root = tk.Tk()

    frame = tk.Frame(root, height=100, width=100)
    button = tk.Button(root, text="Paint")
    button['command'] = lambda wgt=frame : change_bg(wgt)

    frame.pack()
    button.pack()

    root.mainloop()

下面是一个示例,
通过RGB格式循环其背景色:

import tkinter as tk


def cycle(event, widget):
    if widget['bg'][0] != '#':
        widget['bg'] = "#000000"
    else:
        widget['bg'] = '#' + str(int(widget['bg'][1:]) + 1).zfill(6)


if __name__ == '__main__':
    root = tk.Tk()

    frame = tk.Frame(root, height=200, width=200)
    frame.bind('<Button-1>', lambda event, widget=frame: cycle(event, widget))
    frame.pack()

    root.mainloop()
将tkinter作为tk导入
def循环(事件、小部件):
如果小部件['bg'][0]!='#':
小部件['bg']=“#000000”
其他:
widget['bg']='#'+str(int(widget['bg'][1:])+1).zfill(6)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
root=tk.tk()
框架=传统框架(根,高度=200,宽度=200)
frame.bind(“”,lambda事件,widget=frame:cycle(事件,widget))
frame.pack()
root.mainloop()

这可以通过阅读一些文档和/或学习tkinter教程来解决。是的,有一种方法。我尝试了这两种方法,但都出现了错误:
RGBsliders.py”,第21行,在更新预览['bg']=十六进制类型错误:“非类型”对象不支持项分配
@LegacyCoding验证
预览
是否是您认为的内容。预览是我的帧的名称。我做了一些进一步的研究,发现它是一个ttk/tk问题。要解决它,我必须使用
导入tkinter作为tk:tk.frame()
而不是tkinter import*:Frame()中的
。我不明白为什么这样做,但我还是要离开它。(我只使用:分隔行)@LegacyCoding如果导入多个脚本时没有
as
关键字,则下一次导入可能会覆盖类。在这种情况下,可能是用另一个类覆盖tk的框架类。