2016-03-24 1 views
2

Я использую Tkinter's Canvas для создания простой графики для моего графического интерфейса. Я замечаю, что хочу разместить свои фигуры и текст прямо в углах моего холста, но они заканчиваются частично скрытыми. Для текста я вижу, что есть опция anchor, которую в документации предполагается установить на NW, если, например, я хочу поместить текст в левом верхнем углу, но даже тогда я вижу лишь немного начала текста будучи отрезанным. Вот мой код:Как разместить фигуры и текст на tk.Canvas, чтобы они не были отрезаны?

import Tkinter as tk 

root = tk.Tk() 
root.geometry("300x300") 
c = tk.Canvas(root, bg="green", width=300, height=300) 
c.pack(fill="both", side="right", expand=True) 
c.create_text(0,0,text="Hello world!", anchor="nw") 

root.mainloop() 

Я знаю, что могу настроить координаты, где текст начинается и методом проб и фигуры ошибок из которых один дает самый красивый результат, но мне было интересно, если бы был умнее способ сделай это.

я заметил нечто подобное, когда я пытаюсь создать формы, такие как круг:

import Tkinter as tk 

root = tk.Tk() 
root.geometry("300x300") 
c = tk.Canvas(root, bg="green", width=300, height=300) 
c.pack(fill="both", side="right",expand=True) 
c.create_oval(0,0,300,300, fill="gray") 

root.mainloop() 

Для окружности, часть окружности ближе всего к краям будут отрезана. Если я растягиваю и перетаскиваю окно, чтобы быть больше, я могу видеть дальнюю правую и нижнюю части круга, поэтому они рисуются. Я также не вижу вариант, подобный anchor для круга.

Я замечаю минимальное количество пробелов вокруг моего холста, между холстом и окном. Я устанавливал параметры пакета для заполнения со всех сторон и расширялся, если было доступно дополнительное пространство. Мне интересно, если это проблема.

ответ

4

К сожалению, рамка холста и кольцо выделения находятся внутри виджета и, таким образом, используют часть выделенной области и могут потенциально скрывать части других объектов.

Самое простое решение, чтобы установить атрибуты highlightthickness и borderwidth нулю:

c.configure(highlightthickness=0, borderwidth=0) 

Если вам нужна границу и/или выделения кольцо, положил холст внутри фрейма.

+0

Спасибо, что сработало для меня! –

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