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.

Foi útil?

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 ...

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.

Se você usar GTK , você pode usar Glade , que é um arquivo XML.

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.

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