如何解决如何将边框的颜色固定为色标中的一种颜色?
我想将一种颜色固定到tkmacosx库的色标窗口小部件的边框上:当窗口打开时,与色标交互后,颜色为蓝色,边框的颜色也会改变。如何停止并将其固定为一种颜色?
from tkinter import *
from tkmacosx import ColorVar,Colorscale
win = Tk()
win.geometry('300x200')
var = ColorVar()
entry = Entry(win,fg=var)
entry.pack()
colorscale = Colorscale(win,variable=var,mousewheel=1)
colorscale.pack()
mainloop()
解决方法
您可以删除或隐藏或更改其边界线的颜色,因为它只是Canvas
的一项,并且可以通过其标记名"borderline"
进行访问。当用户与Colorscale
进行交互并且调整窗口小部件的大小时,边界线会更改其颜色。
要删除边框,您只需执行以下操作
colorscale.after(100,lambda: colorscale.delete('borderline'))
要隐藏,您需要做的就是像下面这样将边界线的状态更改为"hidden"
colorscale.after(100,lambda: Canvas.itemconfig(
colorscale,'borderline',state='hidden'))
要首先更改边界线的颜色,您需要通过添加Canvas.itemconfig(self,outline='#8E91F3')
然后用"borderline"
dtag Canvas.dtag(self,'borderline')
标签来更改边界线的颜色。
使用以下_set_size
函数修复边界线的任何颜色。
def _set_size(self,evt=None):
"""Internal function."""
if evt.width == self._size[0] and evt.height == self._size[1]:
return
self._size = (evt.width,evt.height)
self._create_items('create',safe_create=True,avoid=('borderline'))
self._create_items('check') # Check and creates a borderline
Canvas.itemconfig(self,outline='#8E91F3') # Changes the color
Canvas.dtag(self,'borderline') # Removes "borderline" tag from all matching items.
现在,您可以在每次调整窗口小部件大小时调用以上任何一个函数。但是,我建议您宁愿修改Colorscale
的内部函数_set_size
,而不是每次<Configure>
序列触发时都调用上述任何函数。因此,我创建了一个自定义类MyColorscale
,该类不会显示边界线。
class MyColorscale(Colorscale):
def _set_size(self,evt=None):
"""Internal function."""
if evt.width == self._size[0] and evt.height == self._size[1]:
return
self._size = (evt.width,evt.height)
self._create_items('create',avoid=('borderline'))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。