Tkinter размеры виджета
У меня есть окно и Canvas. Мне нужно, что бы Canvas был всегда меньше окна на 20 px. Как такое можно осуществить ?
import tkinter as tk
FORM = tk.Tk()
CANVAS = tk.Canvas()
CANVAS.place(relwidth =1, relheight = 1 - 20px) # просто пример того, что мне надо
FORM.mainloop()
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Используйте pack с параметрами padx (отступ справа и слева), pady (отступ сверху и снизу):
import tkinter as tk
form = tk.Tk()
canvas = tk.Canvas(bg="white")
canvas.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
form.mainloop()
Если нужна панель с кнопками, то вообще не нужны отступы, нужен фрейм высотой 20 пикселей, вставляете ее ниже холста через pack или grid, добавляете в нее то, что вам нужно. Кнопки заменил на метки, т.к. кнопки сильно выше 20 пикселей, и расширяют фрейм под свою высоту.
import tkinter as tk
form = tk.Tk()
form.geometry("400x300")
# Для холста указал минимальные размеры, чтобы холст мог ужиматься неограниченно при изменении размер окна
canvas = tk.Canvas(bg="white", height=1, width=1)
canvas.pack(fill=tk.BOTH, expand=True)
toolbar = tk.Frame(form, height=20, background="black")
toolbar.pack(side=tk.LEFT, fill=tk.X, expand=True)
toolbar.pack_propagate(False) # Запрещаем вложенным контролам менять размер фрейма
font = ("TkDefaultFont", 8)
tk.Button(toolbar, text="Кнопка 1", font=font).pack(side=tk.LEFT, padx=1)
tk.Button(toolbar, text="Кнопка 2", font=font).pack(side=tk.LEFT, padx=1)
tk.Button(toolbar, text="Кнопка 3", font=font).pack(side=tk.LEFT, padx=1)
form.mainloop()

