我一直在使用 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()

最佳答案

Section 6.8 Why doesn't the canvas seem to start at 0,0?Tk Usage FAQ 描述了这种现象。

我能够通过对发布的源进行轻微更改来消除边界伪影...

改变这个:

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显示默认为 2 highlightthickness 0 border width

关于python - 如何移除 Canvas 小部件周围的浅灰色边框?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4310489/

10-16 12:06