Python 有没有一种方法(或库)可以使tkinter中的颜色过渡平滑?
首先,一点场景。我有一个只有一个按钮的tkinter窗口。这个按钮在我将鼠标悬停在它上面之前是白色的,在这种情况下它会变成橙色。我的问题是:如何使白色和橙色之间的过渡平滑, 就像一个淡入淡出。到目前为止,我的代码是:Python 有没有一种方法(或库)可以使tkinter中的颜色过渡平滑?,python,tkinter,Python,Tkinter,首先,一点场景。我有一个只有一个按钮的tkinter窗口。这个按钮在我将鼠标悬停在它上面之前是白色的,在这种情况下它会变成橙色。我的问题是:如何使白色和橙色之间的过渡平滑, 就像一个淡入淡出。到目前为止,我的代码是: from tkinter import * from functools import partial root = Tk() def bg_config(widget, bg, fg, event): widget.configure(background=bg, f
from tkinter import *
from functools import partial
root = Tk()
def bg_config(widget, bg, fg, event):
widget.configure(background=bg, foreground=fg)
#Fading effect here
btn = Button(root, text="Button", relief=GROOVE, bg="white")
btn.bind("<Enter>", partial(bg_config, btn, "#f47142", "white"))
btn.bind("<Leave>", partial(bg_config, btn, "white", "black"))
bt.pack()
root.mainloop()
从tkinter导入*
从functools导入部分
root=Tk()
def bg_配置(小部件、bg、fg、事件):
widget.configure(后台=bg,前台=fg)
#这里的衰减效应
btn=按钮(根,text=“按钮”,浮雕=凹槽,bg=“白色”)
btn.bind(“”,部分(bg_配置,btn,“#f47142”,“白色”))
btn.bind(“”,部分(bg_配置,btn,“白色”,“黑色”))
bt.pack()
root.mainloop()
如果有帮助的话,我有wxPython图书馆。有没有其他GUI库或方法可以使这类任务更简单?tkinter中没有任何东西可以直接支持这一点。您需要创建一个函数,该函数每隔几毫秒运行一次,并缓慢更改颜色 这可以通过迭代两种不同颜色(橙色、白色)的rgb值差来实现。此外,还有其他类似的python库,这使工作更容易。在这里,我创建了一个函数,它使用库来淡入和淡出小部件的不同颜色选项。
def fade(小部件,平滑度=4,cnf={},**kw):
“”“此函数将在小部件的不同颜色选项上显示淡色效果。
Args:
widget(tk.widget):由bind函数传递。
平滑度(int):设置淡入淡出的平滑度(1-10)。
背景(str):将背景颜色淡入。
前景(str):将前景颜色淡入。”“”
千瓦=tk._cnfmerge((立方英尺,千瓦))
如果不是kw:raise VALUE ERROR(“未提供选项,-bg,-fg等”)
如果len(kw)>1:返回k的[fade(widget,smoothness,{k:v}),v在kw.items()中[0]
如果不是getattr(widget,'.\u-after\u-id',None):widget.\u-after\u-id={}
widget.after\u cancel(widget.after\u id.get(list(kw)[0],'')
c1=元组(map(lambda:a/(65535),widget.winfo_rgb(widget[list(kw)[0]]))
c2=元组(map(lambda:a/(65535),widget.winfo_rgb(list(kw.values())[0]))
颜色=元组(color.rgb2hex(c,force_long=True)
颜色为c。颜色刻度(c1,c2,最大值(1,平滑度*100)))
def工作者(计数=0):
如果len(颜色)-1