Разверните виджет tkinter при увеличении окна с помощью полосы прокрутки - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть LabelFrame и несколько ярлыков внутри. Я хотел бы вертикально прокрутить ярлыки, и это работает. Я хотел бы увеличить окно по горизонтали, и, соответственно, увеличить виджет, но это не работает. Я должен использовать frameTwo.grid(row=0, column=0, sticky='nsew') как в комментарии, но полоса прокрутки больше не работает.

Может ли кто-нибудь мне помочь?

import tkinter as tk
root = tk.Tk()

container = tk.Frame(root)

container.grid(row=0, column=0, sticky='nsew')


canvas = tk.Canvas(container)
scroll_y = tk.Scrollbar(container, orient="vertical", command=canvas.yview)

frameTwo = tk.Frame(canvas)
# group of widgets

stepOne = tk.LabelFrame(frameTwo, text=" 1. This is my test")
stepOne.grid(row=0, column=0, padx=10, pady=0, sticky='nsew')

for i in range(20):
    tk.Label(stepOne, text='label %i' % i).grid(row=i, column=0, pady=2, sticky='nsew')

# put the frame in the canvas

canvas.create_window(0, 0, anchor='nw', window=frameTwo)
# make sure everything is displayed before configuring the scrollregion
canvas.update_idletasks()

canvas.configure(scrollregion=canvas.bbox('all'), 
                 yscrollcommand=scroll_y.set)

canvas.grid(row=0, column=0, sticky='nsew')
scroll_y.grid(row=0, column=1, sticky='ns')

root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
container.grid_rowconfigure(0, weight=1)
#frameTwo.grid(row=0, column=0, sticky='nsew')
frameTwo.grid_columnconfigure(0, weight=1)
canvas.grid_columnconfigure(0, weight=1)
...