Quando usar layouts de embalagem ou grade no Tknter?
-
25-09-2019 - |
Pergunta
Existem dicas de melhores práticas sobre quando se deve usar o pacote vs. a grade para seus layouts?
Pelo que tenho lido via Google, o Condencus parece ser que a grade pode lidar com qualquer cenário de embalagem, mas não vice-versa.
Para iniciar a conversa, parece que um caso de uso que favorece a grade vs. o pacote é quando se deseja mostrar/ocultar widgets.
Solução
Nem é intrinsecamente melhor que o outro. Cada um tem pontos fortes e fracos. Aprenda o que são e a escolha de qual usar se torna óbvio.
grid
é consideravelmente mais fácil de usar se você precisar depositar as coisas em uma grade. pack
Geralmente é mais fácil de usar se tudo o que você precisa fazer é colocar alguns widgets em uma única linha ou coluna única. Há muita área cinzenta no meio, onde nenhum deles é necessariamente melhor que o outro.
A outra coisa a considerar é o que você disse em sua pergunta: se você deseja mostrar e ocultar widgets em tempo de execução, grid
é provavelmente a melhor escolha por causa do grid_remove
Método que se lembra dos valores de todos os atributos configurados, caso você queira re-adquirir o widget.
Pessoalmente, minha primeira escolha é sempre usar pack
Porque eu aprendi TK pela primeira vez quando não havia grid
comando. Se eu não posso fazer isso facilmente em pack
, ou se estou claramente deitando as coisas em uma grade, vou usar grid
.
Outras dicas
Eu sempre recomendo grade sobre pacote para aplicações polidas. Existem apenas alguns casos de borda em que a embalagem é mais fácil e se encaixa na conta (tudo em uma linha ou col). A grade tem melhor "composibilidade" (por exemplo, megawidgets ou elementos de grade de elementos de grade). Os motivos para preferir a grade são as opções de ajuste fino extra que ela fornece. O uso do peso (que afeta o crescimento e o encolhimento do BTW), MinSize e MaxSize, bem como recursos de conveniência como aplicar linhas/colunas uniformes.
Um aplicativo totalmente em grade de qualquer tamanho usará (significativamente) menos quadros do que um aplicativo compactado equivalente e terá melhor o controle/expansão do controle sobre os elementos internos.
BTW, a embalagem e a grade podem mostrar/ocultar subelementos, embora a sintaxe seja ligeiramente entre os dois. A grade é apenas um pouco melhor porque 'remover' (em vez de 'esquecer') se lembrará das opções de grade no widget de escravos.
Pessoalmente, acho que a grade é muito mais fácil de trabalhar, então eu usaria isso. Claro, você provavelmente leu a única coisa que nunca deve fazer é tentar usar os dois ao mesmo tempo no mesmo contêiner. Obrigado Bryan Oakley por fazer essa distinção.