如何去除我的Canvas小部件周围的浅灰色边框?
我最近在玩Tkinter的Canvas
小部件,想看看能不能做出一些好看的小部件,所以有几个问题想问。
首先,我的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()
3 个回答
0
如果在画布类的实例中添加highlightthickness时出现错误(最近我遇到过这种情况),可以像下面这样在配置中添加它:
canvas=Canvas(width=206,height=260, bg=YELLOW)
canvas.config(highlightthickness=0)
21
简单来说,Canvas(画布)有两个部分会影响它的边缘:一个是边框(borderwidth
属性),另一个是高亮环(highlightthickness
属性)。
如果你的边框宽度和高亮厚度都设置为零,那么画布的坐标就会从0,0开始。否则,这两个部分会占用一些坐标空间。
我通常会把这两个属性都设置为零。然后,如果我真的想要一个边框,我会把这个画布放在一个框架里,并给这个框架加上边框。
94
Tk使用常见问题解答中的第6.8节讲了为什么画布(canvas)看起来不是从0,0开始的问题。
我通过对发布的代码做了一些小改动,成功去掉了边框的影响……
把这个:
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"
这个属性并没有什么影响,但我还是按照常见问题解答的建议保留了它。
在Canvas
初始化后立刻运行w.config()
,发现默认值是2(对于highlightthickness
)和0(对于border width
)。