GUI baseada em marcação para python
-
21-08-2019 - |
Pergunta
Eu quero me meter programando algumas aplicações sérias GUI com base, mas quando eu olhar para coisas como Swing / SWT de Java, eu não posso ajudar, mas odeio a programação de uma interface gráfica, criando "widgets" objetos e preenchê-las e chamar métodos sobre eles.
Eu acho projeto GUI deve ser feito em um arquivo baseado em texto separado em algum formato de marcação, que é lido e processado (por exemplo, HTML), de modo que o desenho da interface não está intimamente ligado com o resto do código.
Eu vi HTMLayout e eu amo a idéia, mas até agora parece ser apenas em C ++.
Eu estou procurando uma biblioteca python (ou mesmo um projeto WIP) para fazê-gui-base de marcação.
Atualizar
A razão que eu não posso aceitar xml do QT é a mesma razão que eu odeio a abordagem programática; você está montando cada elemento separadamente, e especificando cada propriedade dele em uma linha separada. Ele não fornece qualquer vantagem sobre fazendo isso da maneira programática.
Solução
Você pode tentar XUL da Mozilla. Ele suporta Python via XPCOM.
Veja este projeto: pyxpcomext
XUL não é compilado, ele é embalado e carregado no tempo de execução. Firefox e muitos outros grandes aplicativos usá-lo, mas a maioria deles usam Javascript para execução de scripts em vez de Python. Há um ou dois usando Python embora.
Outras dicas
Você deve olhar para o Qt, que você pode usar a partir de Python usando a interface excelente PyQt (por que não nomeá-lo QtPy --- cutiepie, entendeu? --- Eu nunca vai entender).
Com o Qt, você pode ter a opção de construir o seu GUI é programaticamente (que você não quer), ou usando marcação XML. Este arquivo XML pode ser compilado para código de antemão, ou carregado com um comando curto. O último é a maneira normal de trabalho usando PyQt.
O Qt é versátil, de alta qualidade, multi-plataforma, e é provável que você usá-lo já sem saber. O pedido oficial cliente Skype é escrito em Qt, se bem me lembro.
Editar: Basta adicionar alguns links de modo que o OP get obter alguma sensação para ela ...
- Breve introdução à programação Qt com C ++ - Observe o uso do Qt Designer, que gera arquivos .ui, que é um formato XML que me lembro foi também bastante fácil de trabalhar com a mão. programação PyQt é muito semelhante, exceto para estar em uma linguagem de programação muito mais fácil, naturalmente: -)
- Informação sobre o PyQt no Python wiki
- livro online sobre a programação PyQt
Como sobre wxPython? Eu estou apenas começando a trabalhar com ele, mas há uma ferramenta - Editor de recursos XRC - que lhe permite montar o seu GUI, que é então gravados em um arquivo XML. Pelo que entendi, o aplicativo Python carrega o arquivo XML, em vez de ter um monte de código GUI-disposição misturado com o seu código Python.
Se você escolher uma linguagem como Tcl ou Python e Tk para o seu desenvolvimento de aplicações torna-se bastante trivial para escrever seu próprio DSL para descrever a interface. Você pode, por exemplo, escrever uma DSL que permite criar menus como este:
menubar {
File => {
Open => cmd.open
Save => cmd.save
Exit => cmd.exit
}
Edit => {
Cut => cmd.cut
Copy => cmd.copy
Paste => cmd.paste
}
}
... e suas principais formas de GUI como este:
form PropertiesForm {
Font: [fontchooser]
Foreground: [foregroundChooser]
Background: [backgroundChooser]
}
form NewUserForm {
username [_____________________]
[] administrator
enable the following features:
() feature 1
() feature 2
() feature 3
}
notebook {
Properties => PropertiesForm
New User => NewUserForm
}
... e assim por diante. Tcl realmente se destaca em deixá-lo escrever DSLs como este. Note-se que esta capacidade não é construído para Tcl per se, mas a linguagem faz DSLs trivial. Alguns deste tipo de coisa existe no wiki do Tcler, por exemplo, há código para criar menus semelhantes ao que eu descrevi em Menus Made Easy .
Eu acho, porém, que depois de um tempo você vai encontrá-lo muito, muito difícil de fazer UIs profissionais da classe desta forma.
Como um programador GUI que ganhou alguns experiência , você provavelmente deve apenas rolar o seu próprio pequeno kit de ferramentas doce para automatizar tarefas que você encontrar-se a fazer uma e outra vez.
É XML, não Python, mas olhada Abrir Laszlo
janelas?
Você pode usar o editor WinForms no Visual Studio e, em seguida, falar com a montagem de IronPython.