python - create - ¿Cómo elimino el borde gris claro alrededor de mi widget Canvas?
tkinter frame (2)
He estado jugando con el widget Tkinter Canvas
para ver si puedo hacer algunos widgets estéticamente agradables, y tengo algunas preguntas.
Primero, ¿por qué hay un borde gris claro alrededor de mi widget Canvas y cómo me deshago de él?
En segundo lugar, ¿por qué la posición más a la izquierda es en el Lienzo (2,2)? Parece que debería ser (0,0).
Mi guion actual:
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()
La respuesta corta es que el Lienzo tiene dos componentes que afectan los bordes: el borde (atributo de borderwidth
borde) y el anillo de highlightthickness
(atributo de highlightthickness
).
Si tiene un ancho de borde de cero y un grosor de resaltado de cero, las coordenadas del lienzo comenzarán en 0,0. De lo contrario, estos dos componentes del lienzo infringen el espacio de coordenadas.
Lo que más a menudo hago es establecer estos atributos en cero . Entonces, si realmente quiero un borde, pondré ese lienzo dentro de un marco y le daré un borde al marco.
Sección 6.8 ¿Por qué el lienzo no parece comenzar en 0,0? de las preguntas frecuentes sobre el uso de Tk describe el fenómeno.
Pude eliminar el artefacto de la frontera con ligeros cambios en la fuente publicada ...
Cambia esto:
w = Canvas(master, width=150, height=40, bd=0, relief=''ridge'')
w.pack()
a:
w = Canvas(master, width=150, height=40, bd=0, highlightthickness=0, relief=''ridge'')
w.pack()
y esto:
x0 = 2
y0 = 2
x1 = 151
y1 = 2
a:
x0 = 0
y0 = 0
x1 = 150
y1 = 0
Curiosamente, el atributo "borderwidth"
no hizo la diferencia, pero lo dejé en las preguntas frecuentes .
La ejecución de w.config()
inmediatamente después de la declaración de inicialización de Canvas
mostró que los valores predeterminados eran 2 para highlightthickness
border width
y 0 para border width
.