Como parar Tkinter Quadro de encolher para caber seu conteúdo?
Pergunta
Este é o código que está me dando problemas.
f = Frame(root, width=1000, bg="blue")
f.pack(fill=X, expand=True)
l = Label(f, text="hi", width=10, bg="red", fg="white")
l.pack()
Se eu comente as linhas com a etiqueta, o quadro é exibida com a largura direita. No entanto, adicionando a etiqueta parece encolher o quadro para baixo para o tamanho da etiqueta. Existe uma maneira de impedir que isso aconteça?
Solução
Por padrão, quadros tk encolher ou crescer para caber seu conteúdo , que é o que você quer 99% do tempo. O termo que descreve esse recurso é "propagação geometria". Há um comando para transformar propagação geometria ligado ou desligado quando usando pack
(e uma uma semelhante para grid
).
Uma vez que você estiver usando o pacote, a sintaxe seria:
f.pack_propagate(0)
ou talvez root.pack_propagate(0)
, dependendo do widget (s) que você realmente deseja afetar. No entanto, porque você não deu a altura do quadro, é altura padrão é 1 pixel para que você ainda não pode ver os widgets de interiores. Para obter o efeito completo do que você quer, você precisa dar o quadro que contém tanto uma largura e uma altura.
Dito isto, a grande maioria do tempo você deve deixar tkinter calcular o tamanho. Quando você liga propagação geometria fora de sua GUI não vai responder bem às mudanças na resolução, muda em fontes, etc. gestores de Tkinter geometria (pack
, place
e grid
) são notavelmente poderoso. Aprender a tirar proveito desse poder.