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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top