title用法 - python堆疊圖




如何刪除Canvas小部件周圍的淺灰色邊框? (2)

6.8節為什麼畫布似乎不是從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"屬性並沒有什麼區別,但我把它留在FAQ中

Canvas初始化語句之後立即運行w.config()對於highlightthickness ,默認值為2 ,對於border width ,默認值為0

我一直在搞亂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()

簡短的回答是,Canvas有兩個影響邊緣的組件:邊框( borderwidth屬性)和高亮環( highlightthickness屬性)。

如果邊框寬度為零且高光粗細為零,則畫布坐標將從0,0開始。 否則,畫布的這兩個組件會侵犯坐標空間。

我經常做的是將這些屬性設置為零 。 然後,如果我真的想要一個邊框,我會把那個畫布放在一個框架內,並給框架一個邊框。





tkinter-canvas