我一直在搞乱Tkinter Canvas
小部件,看看我是否可以制作一些美观的小部件,我有几个问题。
首先,为什么我的Canvas小部件周围有浅灰色边框,我该如何摆脱它?
其次,为什么画布中最左边的位置(2,2)?看起来应该是(0,0)。
我目前的剧本:
from Tkinter import *
master = Tk()
master.configure(bg='black')
master.wm_attributes("-topmost", 1)
w = Canvas(master, width=150, height=40, bd=0,relief='ridge',)
w.pack()
color = 100
x0 = 2
y0 = 2
x1 = 151
y1 = 2
while y0 < 20 :
r = color
g = color
b = color
rgb = r, g, b
Hex = '#%02x%02x%02x' % rgb
w.create_line(x0, y0, x1, y1,fill=str(Hex), width=1)
color = color - 2
y0 = y0 + 1
y1 = y1 + 1
color = 10
while y0 < 40 :
r = color
g = color
b = color
rgb = r, g, b
Hex = '#%02x%02x%02x' % rgb
w.create_line(x0, y0, x1, y1,fill=str(Hex), width=1)
color = color + 4
y0 = y0 + 1
y1 = y1 + 1
mainloop()
答案 0 :(得分:36)
我能够通过略微改变发布的来源来消除边界人工制品......
改变这个:
w = Canvas(master, width=150, height=40, bd=0, relief='ridge')
w.pack()
为:
w = Canvas(master, width=150, height=40, bd=0, highlightthickness=0, relief='ridge')
w.pack()
和此:
x0 = 2
y0 = 2
x1 = 151
y1 = 2
为:
x0 = 0
y0 = 0
x1 = 150
y1 = 0
有趣的是,"borderwidth"
属性并没有什么区别,但我按照常见问题将其保留了下来。
在w.config()
初始化语句后立即运行Canvas
,highlightthickness
的默认值为 2 而border width
的默认值为 0 1}}。
答案 1 :(得分:12)
简短的回答是,Canvas有两个影响边缘的组件:边框(borderwidth
属性)和高亮环(highlightthickness
属性)。
如果边框宽度为零且高光粗细为零,则画布坐标将从0,0开始。否则,画布的这两个组件会侵犯坐标空间。
我最常做的是将这些属性设置为零。然后,如果我真的想要一个边框,我会将那个画布放在一个框架内,并给框架一个边框。
答案 2 :(得分:0)
如果在画布类实例中添加 highlightthickness 会引发错误(它最近为我做的)。将其添加到配置中,如下所示:
canvas=Canvas(width=206,height=260, bg=YELLOW)
canvas.config(highlightthickness=0)