Форум сайта python.su
0
Пробую разместить картинку. Планирую сделать редактор картинки.
Дерево у меня получилось такое:
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)
Прикреплённый файлы:
2222.png (129,4 KБ)
Офлайн
27
Скроллы и полотно помещаем в один и тот же фрейм, применяем к каждому элементу pack с соответствующими опциями размещения (LEFT, BOTTOM и т.д. по плану размещения). Вертикальный скролл растягиваем по Y, горизонтальный по X, а полотно BOTH. Вся конструкция заполнит фрейм полностью.
Есть правило: в пределах одного фрейма ко всем элементам используется только один метод упаковки: либо pack, либо grid, либо place. В одно и том же фрейме нельзя применять разные методы упаковки.
Офлайн