2016-06-11 6 views
1

Я пытаюсь создать прямоугольник внутри холста Tkinter (Python 2.7), который является тем же размером, что и холст. Вот соответствующая часть кода:Рисование прямоугольника на python Холст Tkinter, который покрывает весь холст, не показывает границу сверху и слева

self.canvas = Canvas(self, width=100, height=100, backround="yellow") 
self.canvas.create_rectangle(0,0,100,100) 

Это рисует прямоугольник, но я не могу видеть левую и верхнюю границу прямоугольника. Если я начну прямоугольник, скажем, 5,5 вместо 0,0, я могу увидеть границу прямоугольника. Любые идеи относительно того, почему это происходит, и как я могу обойти это?

ответ

2

К сожалению, граница холста включена в область рисования. Попробуйте установить атрибуты borderwidth и highlightthickness на ноль на холсте.

Вы также хотите отрегулировать координаты вашего прямоугольника до конца на 99, так как отсчет начинается с нуля (если ширина равна 100, координаты идут от 0 до 99).

+0

Это правильно. Чтобы добавить к вашему ответу, граница Canvas обычно по умолчанию установлена ​​в 1 пиксель, поэтому, установив верхний левый угол на '(0,0)', граница прямоугольника станет такой же, как граница Canvas которые нельзя рисовать, потому что они сидят внутри системы координат холста (вы не можете рисовать в пространстве, которое оно занимает). Поэтому, если OP хочет удержать вещи по умолчанию, он может переместить верхний левый угол в систему координат по размеру границы, что означает, что он должен ввести '(1,1)' вместо '(0, 0) 'и инструкция' w.create_rectangle (1, 1, 100, 100) 'действительна. –

+0

Установка для меня «borderwidth» и «highlightthickness» в 0. Однако, как вы уже упоминали, это привело к тому, что правый и нижний контуры отображались за пределами холста, так как мои координаты были отключены на 1 (т. Е. Они должны были быть (99,99) не (100,100) – Sid

Смежные вопросы