Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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_Tkinter - Fatal编程技术网

Python 有没有一种方法(或库)可以使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

首先,一点场景。我有一个只有一个按钮的tkinter窗口。这个按钮在我将鼠标悬停在它上面之前是白色的,在这种情况下它会变成橙色。我的问题是:如何使白色和橙色之间的过渡平滑, 就像一个淡入淡出。到目前为止,我的代码是:

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