Posterior a consultar con expertos en este tema, programadores de diversas ramas y profesores dimos con la respuesta a la pregunta y la compartimos en esta publicación.
Solución:
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 del borde 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 "borderwidth"
attribute no hizo una diferencia, pero lo dejé por el Preguntas más frecuentes.
Correr w.config()
inmediatamente después de la Canvas
declaración de inicialización mostró los valores predeterminados para ser 2 por highlightthickness
y 0 por border width
.
La respuesta corta es que el lienzo tiene dos componentes que afectan los bordes: el borde (borderwidth
attribute) y resalte el anillo (highlightthickness
attribute).
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 hago con más frecuencia es establecer estos attributes a cero. Luego, si realmente quiero un borde, pondré ese lienzo dentro de un marco y le daré un borde al marco.
Te mostramos las reseñas y valoraciones de los lectores
Agradecemos que desees respaldar nuestro trabajo escribiendo un comentario o puntuándolo te damos las gracias.