Pergunta

Eu estou trabalhando em um aplicativo de PyGTK / clareira que atualmente tem 16 janelas / diálogos e é cerca de 130KB, e acabará por ter cerca de 25 janelas / diálogos e ser em torno de 200KB. Atualmente, eu estou armazenando todas as janelas em um arquivo clareira monolítica. Quando eu executar uma janela eu chamá-lo assim ...

self.wTree = gtk.glade.XML("interface.glade", "WindowXYZ")

Eu me pergunto se seria uma idéia melhor para dividir cada janela em seu próprio arquivo clareira. Em vez de um arquivo glade com 25 janelas / diálogos eu teria 25 arquivos Glade com uma janela / diálogo cada e chamá-lo assim:

self.wTree = gtk.glade.XML("windowxyz.glade")

O que vocês acham que é a melhor maneira de fazer isso? É um método mais recursos do que o outro? Uma coisa que seria bom em ir para arquivos Glade individuais é que a nomeação de widgets seria mais fácil. Por exemplo, eu o nome de todos os meus OK botões "windowxyz_ok", mas eu poderia alterá-lo para simplesmente "ok" em vez. Torna as coisas mais simples. A desvantagem é que ele pode ser um pouco menos conveniente de fazer alterações em janelas diferentes.

Estou aberto a todos e quaisquer argumentos. Obrigado!

Foi útil?

Solução

Em meus projetos, eu sempre tenho uma janela por arquivo clareira. Eu recomendo o mesmo para o seu projeto.

A seguir estão as duas razões principais:

  • Será mais rápido e usam menos memória, uma vez que cada chamada para gtk.glade.XML () analisa a coisa toda. Claro que você pode passar no argumento raiz para evitar criar a árvore Widget para todas as janelas, mas você ainda tem que parse todo o XML, mesmo se você não está interessado nela.
  • Conceitualmente é mais fácil de entender se tem um nível superior por janela. Você facilmente saber quais filename um diálogo dada / janela está em apenas olhando para o nome do arquivo.

Outras dicas

Você tomou alguns horários para descobrir se ele faz a diferença?

O problema é que, tanto quanto eu entendo, Glade sempre cria todos os widgets quando se analisa um arquivo XML, por isso, se você abrir o arquivo XML e apenas ler um único widget, você está desperdiçando uma grande quantidade de recursos.

O outro problema é que você precisa para voltar a ler o arquivo se você quiser ter uma outra instância desse widget.

A maneira que eu fiz isso antes foi a de colocar todos os widgets que foram criados apenas uma vez (como o sobre a janela, a janela principal etc) em um arquivo clareira, e os arquivos de Glade separados para widgets que precisavam ser criado várias vezes.

Eu uso diferentes arquivos Glade para diferentes janelas. Mas eu continuo diálogo associada com uma janela no mesmo arquivo clareira. Como você disse, o problema de nomenclatura é irritante.

Eu tenho um arquivo glade com 2 janelas. Trata-se de 450kb de tamanho e eu não vi qualquer lentidão usando libglademm com GTKmm.

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