Quando eu "esqueço" ou "adiciono" um widget a um widget PanedWindow antes de qualquer redimensionamento da janela raiz, então o tamanho da janela raiz é alterado por essas ações. Mas depois de redimensionar a janela raiz pelo ponteiro do mouse, "esquecer" ou "adicionar" não alteram mais o tamanho da janela, mas apenas as "subjanelas" da PanedWindow alteram seus tamanhos.
Como posso manter o tamanho da janela raiz estável durante essas ações, mesmo antes de qualquer redimensionamento da janela raiz?
Este é meu código de exemplo:
import tkinter as tk
from tkinter import ttk
state = "shown"
def hide_show(paned, canvas):
global state
if state=="shown":
paned.forget(canvas)
state = "hidden"
else:
paned_window.add(canvas, weight= 1)
state = "shown"
root = tk.Tk()
paned_window = ttk.PanedWindow(root, orient=tk.HORIZONTAL,)
button = ttk.Button (root, text="hide/show", command=lambda: hide_show(paned_window, canvas2))
paned_window.grid(row=0, sticky=(tk.W, tk.E, tk.S, tk.N))
button.grid (row=1, sticky=tk.W)
root.rowconfigure (0, weight=1)
root.rowconfigure (1, weight=0)
root.columnconfigure(0, weight=1)
canvas1 = tk.Canvas(paned_window, height=100, width=100, bg="red")
canvas1.grid()
paned_window.add(canvas1, weight= 1)
canvas2 = tk.Canvas(paned_window, height=100, width=100, bg="green")
canvas2.grid()
paned_window.add(canvas2, weight= 1)
root.mainloop()
Acho que definir
root.geometry()
um valor fixo ajudará, pois criará uma janela de dimensões fixas, evitando redimensionamentos indesejados.