Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 28, 2019 08:54:43

nick789
Зарегистрирован: 2016-09-21
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Как правильно создать оконное приложение

Пробую разместить картинку. Планирую сделать редактор картинки.
Дерево у меня получилось такое:
root - frame - canvas - jpg
На текущем этапе не удается растянуть картинку на весь frame, как это можно сделать ?
Куда лучше прицепить крол бар для прокрутки больших картинок ? Как у меня сделано, или к frame -му.

 frame = Frame(root, bd=2, relief=SUNKEN)
frame.grid_rowconfigure(0, weight=0)
frame.grid_columnconfigure(0, weight=0)
xscrollbar = Scrollbar(frame, orient=HORIZONTAL)
xscrollbar.grid(row=1, column=0, sticky=E+W)
yscrollbar = Scrollbar(frame)
yscrollbar.grid(row=0, column=1, sticky=N+S)
canvas = Canvas(frame, bd=0, xscrollcommand=xscrollbar.set, yscrollcommand=yscrollbar.set)
canvas.grid(row=0, column=0,  sticky=N+S+E+W)
File = "pic.jpg"
img = ImageTk.PhotoImage(Image.open(File))
canvas.create_image(0,0,image=img, anchor="nw")
xscrollbar.config(command=canvas.xview)
yscrollbar.config(command=canvas.yview)
canvas.config(scrollregion=canvas.bbox(ALL))
frame.pack(fill=BOTH, expand=1)
Пробовал так. Окно вообще не появляется.
 canvas.pack(expand = 1, fill=BOTH)

Отредактировано nick789 (Янв. 28, 2019 11:18:15)

Прикреплённый файлы:
attachment 2222.png (129,4 KБ)

Офлайн

#2 Янв. 29, 2019 13:13:50

Rafik
Зарегистрирован: 2018-09-04
Сообщения: 231
Репутация: +  27  -
Профиль   Отправить e-mail  

Как правильно создать оконное приложение

Скроллы и полотно помещаем в один и тот же фрейм, применяем к каждому элементу pack с соответствующими опциями размещения (LEFT, BOTTOM и т.д. по плану размещения). Вертикальный скролл растягиваем по Y, горизонтальный по X, а полотно BOTH. Вся конструкция заполнит фрейм полностью.
Есть правило: в пределах одного фрейма ко всем элементам используется только один метод упаковки: либо pack, либо grid, либо place. В одно и том же фрейме нельзя применять разные методы упаковки.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version