Tkinter - Как заставить содержимое заполнять экран? - PullRequest
0 голосов
/ 18 июня 2020

Я не знаю, как заставить его заполнить экран и правильно отображать содержимое.

def update_scrollregion(event):
    canvas.configure(scrollregion=canvas.bbox("all"))


root = Tk()

Frame1 = Frame(root, bg="grey")
Frame1.grid()
Frame1.rowconfigure(0, weight=1)
Frame1.columnconfigure(0, weight=1)

canvas = Canvas(Frame1, bg="grey")
canvas.grid(row=0, column=0, sticky="nsew")

canvasFrame = Frame(canvas, bg="grey")
canvas.create_window(0, 0, window=canvasFrame, anchor='nw')

for item in news:
    tite = alph1[count]
    lin = alph2[count]
    pt = tite + str(count)
    tite = Label(canvasFrame, text=item['title'], fg="white", bg='grey').grid(row=rower)
    lin = Label(canvasFrame, text=item['link'], fg="blue", cursor="hand2", bg='grey').grid(row=rower + 1)
    pt = Label(canvasFrame, text=item['votes'], fg="light green", bg='grey').grid(row=rower + 2)
    count += 1
    rower += 3

scrollbar = Scrollbar(Frame1, orient=VERTICAL)
scrollbar.config(command=canvas.yview)
canvas.config(yscrollcommand=scrollbar.set)
scrollbar.grid(row=0, column=1, sticky="ns")

canvasFrame.bind("<Configure>", update_scrollregion)

root.mainloop()

Он показывает это .

1 Ответ

1 голос
/ 18 июня 2020

Для изменения размера Frame1 при изменении размера окна вам нужно

Frame1.grid(sticky="news")

root.rowconfigure(0, weight=1)
root.columnconfigure(0, weight=1)

или

Frame1.pack(fill="both", expand=True)

Минимальный рабочий код

import tkinter as tk

# --- functions ---

def update_scrollregion(event):
    canvas.configure(scrollregion=canvas.bbox("all"))

# --- main ---

root = tk.Tk()

#root.rowconfigure(0, weight=1)
#root.columnconfigure(0, weight=1)

Frame1 = tk.Frame(root, bg="grey")
#Frame1.grid(sticky="news")
Frame1.pack(fill="both", expand=True)

Frame1.rowconfigure(0, weight=1)
Frame1.columnconfigure(0, weight=1)

canvas = tk.Canvas(Frame1, bg="grey")
canvas.grid(row=0, column=0, sticky="nsew")

canvasFrame = tk.Frame(canvas, bg="grey")
canvas.create_window(0, 0, window=canvasFrame, anchor='nw')

scrollbar = tk.Scrollbar(Frame1, orient="vertical")
scrollbar.config(command=canvas.yview)
canvas.config(yscrollcommand=scrollbar.set)
scrollbar.grid(row=0, column=1, sticky="ns")

canvasFrame.bind("<Configure>", update_scrollregion)

root.mainloop()
...