GUI baseada em navegador para um aplicativo python [fechado]


8

Quero criar uma GUI baseada na Web / navegador para um aplicativo python de linha de comando. O objetivo é fazer uso das tecnologias HTML / JS para criar essa GUI. Como o próprio aplicativo, ele precisa ser executado no Linux e Windows, e a interface estará acessível apenas a partir do host local (não exposto à Internet). A GUI conterá de 5 a 10 páginas.

Eu não quero uma GUI de desktop tradicional que inclua HTML / JS, mas apenas um monte de arquivos html e algum tipo de controlador entre eles e o aplicativo.

Também quero fazer uso de programação assíncrona (como ajax) para poder carregar e imprimir dados na GUI sem atualizar a página inteira. Eu provavelmente usaria o jQuery para isso e algumas outras coisas.

Como você recomendaria projetar isso? O desempenho não é a chave aqui, estou analisando a confiabilidade, portabilidade e simplicidade.

Estou pensando em usar um servidor / estrutura HTTP python leve (como CherryPy ) e talvez mais tarde um sistema de modelos Python (no início, serão apenas algumas páginas).

EDIT:
Estou procurando idéias / recomendações sobre como criar isso, não alternativas para o GUI do navegador / baseado na Web.


2
Se for executado apenas localmente, simplifique tudo e escreva a GUI em python.
GrandmasterB

3
Não se deixe intimidar pela idéia de criar uma interface gráfica de desktop. Acho que a GUI da área de trabalho é muito mais fácil de produzir do que as interfaces baseadas em HTML.
precisa

4
Embora eu concorde que eles tenham fortes vantagens, não é isso que eu quero alcançar. E como você diz, você os acha mais fáceis de produzir, mas não é o meu caso. Por fim, estou usando bibliotecas javascript que fornecem coisas que você não encontra nas estruturas de GUI do Python.
Ack__ # 23/13

2
Compartilhar sua pesquisa ajuda a todos. Conte-nos o que você tentou e por que ele não atendeu às suas necessidades. Isso demonstra que você dedicou um tempo para tentar ajudar a si mesmo, evita reiterar respostas óbvias e, acima de tudo, ajuda a obter uma resposta mais específica e relevante. Veja também How to Ask
gnat

2
Novamente, não se trata de ficar intimidado, desenvolvi muitas GUI de desktops no passado, usando Gtk, nCurses, WinForms, .Net e até fiz uma GUI no assembler x86 usando radasm . Só que não se encaixa nas minhas necessidades aqui.
Ack__ #

Respostas:


5

Atualmente, estou tentando fazer praticamente a mesma coisa. Parece que o Python tem um servidor ( SimpleHTTPServer ), então estou tentando criar um aplicativo da web AngularJS que irá interagir com o servidor Python.

Potencialmente, existe um projeto cefpython que permitiria distribuir aplicativos Python como programas independentes.


Vi comentários negativos sobre o SimpleHTTPServer aqui no SO, sugiro procurar outro servidor (provavelmente irei para o CherryPy, mas existem muitos outros disponíveis). Você já experimentou o CEFPython? Receio que ele não forneça as funcionalidades mais atualizadas do Chromium, mas posso estar errado. O uso de um navegador real garante suporte, manutenção e desenvolvimento ativo reais.
ack__

@ack__ Atualmente, estou jogando com o SimpleHTTPServer - acho que não há problemas se tudo o que você precisa é de um servidor de sessão única. Estou tentando me contentar apenas com a equipe da biblioteca padrão para facilitar a instalação nos sistemas dos usuários. Ainda não cheguei a um ponto em que preciso do cefpython - mas deve ser possível atualizar o CEF, se necessário.
21813 Eugene

Ok, e qual versão do CEF você usou? Não estou preocupado com a parte do processo múltiplo, mas com as diferenças entre a API Webkit e a API de conteúdo Chromium, se houver.
Ack__ #

Você pode simplesmente pegar binários no site deles. Eles têm um aplicativo CEFClient que você pode usar para propagar seu aplicativo. Também vi alguns produtos baseados em CEF, embora eles usem o node.js - github.com/adobe/brackets-shell e github.com/rogerwang/node-webkit . brackets-shell executa o nó em um processo separado, enquanto o node-webkit (última vez que verifiquei) estava fazendo isso em processo. Eu me pergunto o quão difícil seria substituir o nó pelo aplicativo Python.
21813 Eugene

3

Seus critérios declarados são:

  • Confiabilidade
  • Portabilidade
  • Simplicty

Se for esse o caso, um aplicativo de desktop é o caminho a percorrer. Não há necessidade de adicionar um servidor web à mistura. Isso apenas complicará as coisas sem nenhum ganho real.

Com base na edição do OP - que uma interface baseada em HTML é desejada - uma rota possível pode ser o node-webkit . Isso permitirá que você crie um aplicativo de desktop executado no Windows, Linux e Mac usando HTML e Javascript. É adotada uma abordagem semelhante ao PhoneGap (com a exceção de que o mesmo navegador incorporado é usado em todas as plataformas). O nó é usado para alimentar o Javascript, que fornece acesso a um grande número de bibliotecas. E você tem acesso ao sistema subjacente, permitindo executar o programa de linha de comando baseado em Python.


2
Eu diria que eles seriam fáceis, não fáceis. Não será mais confiável, porque ele não está tão familiarizado com o pytk. Ele nunca disse nada sobre linha de comando. Não há nada menos portátil em um servidor local. Novamente, se ele está fazendo seus próprios controles, por exemplo, será muito mais difícil desenvolver com um aplicativo gui.
BeardedO

Você obtém muitos benefícios ao fazer nossa interface do usuário em HTML - é por isso que o Steam, o Spotify e outros oferecem suporte ao Chromium Embedded Framework. O Adobe Brackets é um exemplo interessante - eles têm o node.js em execução como um processo separado, juntamente com o processo de CEF UI.
21913 Eugene

Sim, o principal benefício é a flexibilidade. Você tem muito menos resistência, por exemplo, ao desenvolvimento de novos controles, layouts reativos, layouts de páginas dinâmicos.
BeardedO

3
Apenas para esclarecer - ao fazer a interface do usuário em HTML, você obtém uma interface moderna de plataforma cruzada com suporte altamente otimizado para renderização de fontes, transições aceleradas por GPU, etc. Há um grande número de bibliotecas e estruturas bem mantidas, ferramentas e outras. Por exemplo, um problema irritante que eu enfrento ao fazer interface do usuário em Java é o suporte a Retina Macs. Não existe esse problema ao executar nos navegadores.
21913 Eugene

1
GrandmasterB Não estou dizendo que você não pode fazer o que o navegador faz. Você pode. Mas os navegadores já o implementam e são altamente otimizados (a concorrência é acirrada lá).
21813 Eugene

2

Opções para aplicativos da web Python:

  • django
  • web.py
  • werkzeug (com ou sem balão)
  • torcido
  • cherry.py
  • wsgi cru
  • raw simplehttpserver

Qualquer um destes irá funcionar. Na medida em que você cria um aplicativo; a maioria dessas estruturas possui tutoriais online. Basta seguir e adaptá-lo para atender às suas necessidades.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.