Desenvolvimento Desktop com HTML/CSS

631 views
Skip to first unread message

Gileno Alves

unread,
Aug 10, 2014, 5:28:04 PM8/10/14
to Python Brasil
Pessoal, alguém aqui já desenvolveu ou está trabalhando em algum projeto que precisa ser desktop mas para desenvolver a interface está usando HTML/CSS (logicamente a lógica sendo em Python).

Encontrei muitas coisas na web mas queria a opinião de alguém que está usando mesmo.

Links que encontrei:

Neste último a ideia seria rodar um servidor local de django, flask, bottle ou qualquer outro framework e um processo a parte e depois abrir o PySide.

--

Fábio Cerqueira

unread,
Aug 10, 2014, 6:00:49 PM8/10/14
to python...@googlegroups.com
Cara, uma vez fiz umas gambiarras com Python + PyQT + JavaScript, deu certo, mas era algo bem pequeno. Pelo menos ficou bonito.

Em QT tá para deixar bonito sem partir para essas artimanhas. 


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Fábio Cerqueira

Gileno Alves

unread,
Aug 10, 2014, 6:43:04 PM8/10/14
to Python Brasil
Opa Fábio, o problema é que eu não quero "desenhar" uma interface via QtWidget's :(

Prefiro desenhar ou pegar algo pronto usando html/css/js

Carlos Perche

unread,
Aug 11, 2014, 8:32:19 AM8/11/14
to python...@googlegroups.com
procure sobre o node webkit + py2exe (WIN), pyInstaller(cross), pyapp (max), cx_freeze (cross)


Rael Max

unread,
Aug 11, 2014, 9:14:50 AM8/11/14
to python...@googlegroups.com
Uma opção também seria escrever o frontend num chrome app(usamos bootstrap + angularjs). Desenvolvi um projeto usando chrome app + bottle e funcionava bem, mas no fim decidimos fazer nativo com python+tk, mas não encontramos nenhuma limitação no chrome app. Dá uma olhada!

https://developer.chrome.com/apps/about_apps


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Rael Max
Desenvolvedor Web.
<contato at raelmax.com>

flit

unread,
Aug 11, 2014, 9:40:52 AM8/11/14
to python-brasil
Senhores(as),

Pergunta honesta sem sentido de ser flame war.

Mas pq a necessidade de usar um app desktop com qt ou tk ao inves de um aplicativo rodando num framework web (django,flask,etc)?

Ainda existe necessidade de rodar "local"? Portas seriais? USB?
Alguem poderia dar bons exemplos ? Com motivos?

Pergunta eh honesta sem flame war, visto que muitos contratos eu pego eh para substituir aplicação desktop por web .

[]s
Henrique

Pablo Santos

unread,
Aug 11, 2014, 10:24:26 AM8/11/14
to python...@googlegroups.com
Senhores(as),

Pergunta honesta sem sentido de ser flame war.

Mas pq a necessidade de usar um app desktop com qt ou tk ao inves de um aplicativo rodando num framework web (django,flask,etc)?

Ainda existe necessidade de rodar "local"? Portas seriais? USB?
Alguem poderia dar bons exemplos ? Com motivos?

Pergunta eh honesta sem flame war, visto que muitos contratos eu pego eh para substituir aplicação desktop por web .

[]s
Henrique


Imagine que você está escrevendo um sistema de credenciamento que será usado nos terminais da recepção de eventos do porte do Salão do Automóvel.
A rede de lugares que hospedam eventos desse porte nem sempre é confiável, e como você não quer que as pessoas nas filas fiquem "indispostas", as aplicações têm que funcionar localmente.
Agora pense que, além de você não ter tempo para instalar e configurar o ambiente onde sua aplicação vai rodar, as máquinas não são uniformes: navegadores diferentes, configurados cada um de um jeito etc.
Some a isso a necessidade de rapidez na operação e na resposta desse sistema, pois nesses eventos a quantidade de pessoas a serem credenciadas é grande.
Nesse cenário (tirado de uma situação real), aplicações desktop são mais práticas, pois os analistas têm pouco ou nenhum controle sobre o ambiente onde suas aplicações funcionarão ou a infraestrutura do lugar.

[]'s
Pablo

Gileno Alves

unread,
Aug 11, 2014, 11:33:24 AM8/11/14
to Python Brasil
@Henrique valeu pelo comentário. Eu sou desenvolvedor Django a uns 5 anos, e eu entendo bem a sua pergunta e particularmente não gosto (não mesmo) de desenvolver algo totalmente Desktop.

A questão é que o que eu mantenho (e agora estou criando) um software científico (http://www.dantasengenharia.com/produtos/categoria/softwares/) para avaliação de bens, usado por alguns Engenheiros. Esse software é parecido como esses aqui:


Esse software faz uso de alguns algoritmos que necessitam de um processamento maior e a forma de trabalho da maioria dos usuários não é online, não seria confortável para o usuário enviar grandes massas de dados, executar procedimentos e esperar o retorno de servidores na web, sendo que eles poderiam facilmente rodar em seus computadores offline. Existe uma séria de outros fatores que inviabiliza o uso de uma aplicação web no lugar de um software desktop mas que não vale a pena eu entrar em detalhes.

@Rael, vou dar uma olhada valeu :D

@Carlos valeu pela dica mas eu já faço o packaging via cx-freeze, criando instalador e tudo mais, o problema é que eu não quero usar javascript (Node.js), pois teria que implementar muita coisa base para o software que já tenho em bibliotecas como:


Atualmente eu uso Qt/QtCreator, PySide, Python 2.7, cx-freeze e consigo rodar o rascunho de um dos módulos mas antes de continuar queria ver se daria para fazer algo com o Webkit, Chrome/Chromium ... como mencionaram. Ontem eu estudei um pouco mais e vi que alguns desenvolvedores preferem não usar HTML/CSS por causa de algumas limitações na interface :(

Gileno Alves

unread,
Aug 11, 2014, 11:40:44 AM8/11/14
to Python Brasil
@Rael, dei uma olhada aqui não vai servir não :(

@Pable, exatamente. Existem algumas situações que uma app desktop vai acabar se saindo melhor, você ainda pode usar recursos HTML5 como local storage e outras coisas para que possa trabalhar offline mas nem sempre isso vai resolver.

Para vocês terem uma noção, eu fiz um sistema de ativação do software online e tive que colocar uma opção offline porque alguns não queriam/podiam ativar online.

Ivanelson Nunes

unread,
Aug 11, 2014, 12:52:15 PM8/11/14
to python...@googlegroups.com

Gileno Alves

unread,
Aug 12, 2014, 4:54:38 AM8/12/14
to Python Brasil
@Ivanelson, não é bem isso, a ideia é desenvolver uma aplicação desktop com instalador e tudo mais só que a interface seria desenvolvida com HTML/CSS.

Rael Max

unread,
Aug 12, 2014, 8:13:01 AM8/12/14
to python...@googlegroups.com
@gileno, Um tempo atrás um amigo escreveu um post sobre Pyside + HTML, talvez seja o que você procura.

http://timoteoramos.wordpress.com/2011/09/28/pyside-e-aplicacoes-web/

Sinval Júnior

unread,
Aug 12, 2014, 8:54:36 AM8/12/14
to python...@googlegroups.com
Gileno, já pensou no kivy, não será possível aproveitar css e html. Mais a sintax é bom parecida. Ao meu ver você irá agregar muito ao seu projeto.

Ao encaminhar esta mensagem, por favor:
1 - Apague meu endereço eletrônico;
2 - Encaminhe como Cópia Oculta (Cco ou BCc) aos seus destinatários. Dificulte assim a disseminação de vírus, spams e banners.

#=================================================================+
#!/usr/bin/env python
nome = 'Sinval Júnior'
email = 'sinvalju arroba gmail ponto com'
print nome
print email
#==================================================================+

Shander Lyrio

unread,
Aug 12, 2014, 8:58:11 AM8/12/14
to python...@googlegroups.com

Caros,

Eu acredito que a grande questão de quem desenvolve sistema desktop
em detrimento à Web é que para Desktop bastaria você programar em Python
enquanto que para a Web você precisaria saber html, css, python e
Javascript, isto sem contar que você utilize SASS, LESS, etc.

Para quem já é desenvolvedor web já está acostumado a trabalhar com
4 linguagens para fazer um sistema, 2 de marcação e duas de programação,
mas para quem está acostumado com desktop deixar de utilizar apenas uma
única linguagem para começar a utilizar 4 não é uma questão tão simples
assim.

Sistema feito para web roda no desktop, mas daí a ser a bala de
prata, acho que está muito longe disso, principalmente se você precisar
fazer um instalador dele. Se tiver mais de um sistema tem que ser portas
diferentes, se usar a porta que outro já está usando vai ter que mudar,
depender se o firewall está bloqueando aquela porta, etc... É muito mais
coisa para se pensar. Tem seus prós, sem dúvida, principalmente para
quem só desenvolve web e quer fazer algum serviço desktop, mas também
tem seus contras.

Eu estou feliz com o meio termo que eu escolhi, seviço na Web com
web-services, e interface gráfica em qualquer lugar (inclusive uma para
desktop com JavaFx). Sim, eu sei que no meu caso é um trabalho a mais,
mas eu comecei como programador desktop, depois tive de sofrer muito
para começar a programar para a web e me acostumar com seu paradigma
completamente diferente além da lentidão dos browsers (renderização de
html em browsers + formatação em CSS + Javascript nunca será tão rápido
quanto algo pronto para desktop).

Mas veja que no meu caso foi mais simples mudar para a Web porque
eu já programava antes da Web nascer para os mortais e comecei a estudar
a programação para a Web logo quando ela nasceu. Mas para quem hoje
programa apenas para desktop, mudar para a Web não é uma coisa tão
trivial, tem que ser guerreiro. Ninguém me tira da cabeça que cada vez
mais os sistemas serão mistos.

--
Shander Lyrio

Sinval Júnior

unread,
Aug 12, 2014, 9:09:42 AM8/12/14
to python...@googlegroups.com
Apenas complementado usando o kivy-berkelium [1] será possível renderizar a interface no Chrome.

Ao encaminhar esta mensagem, por favor:
1 - Apague meu endereço eletrônico;
2 - Encaminhe como Cópia Oculta (Cco ou BCc) aos seus destinatários. Dificulte assim a disseminação de vírus, spams e banners.

#=================================================================+
#!/usr/bin/env python
nome = 'Sinval Júnior'
email = 'sinvalju arroba gmail ponto com'
print nome
print email
#==================================================================+


flit

unread,
Aug 12, 2014, 10:42:33 AM8/12/14
to python-brasil
Carissimo Gileno,

Talvez um modelo que possa te ajudar e ser interessante seria o do Sagemath[1].
Que inicia um servidor web local onde o usuario acessa os notebooks pelo browser local.
Mas claro tem um instalador e um atalho simples para iniciar o servidor web local.
Imitando o modelo de notebooks do  Mathematica.

Acho que poderia ser uma bom caminho para voces, permitindo facil atualização e controle .




[]s

Danillo Souza

unread,
Aug 12, 2014, 10:48:43 AM8/12/14
to python...@googlegroups.com

Marcelo Albuquerque

unread,
Aug 12, 2014, 12:06:49 PM8/12/14
to python...@googlegroups.com

Fabio C. Barrionuevo da Luz

unread,
Aug 12, 2014, 12:13:21 PM8/12/14
to python...@googlegroups.com
Muito interessante o Scandium. Marcelo, obrigado por compartilhar
Fábio C. Barrionuevo da Luz
Acadêmico de Sistemas de Informação na Faculdade Católica do Tocantins - FACTO
Palmas - Tocantins - Brasil - América do Sul


Blog colaborativo sobre Python e tecnologias Relacionadas, mantido totalmente no https://github.com/pythonclub/pythonclub.github.io .

Todos são livres para publicar. É só fazer fork, escrever sua postagem e mandar o pull-request. Leia mais sobre como publicar em README.md e contributing.md.
Regra básica de postagem:
"Você" acha interessante? É útil para "você"? Pode ser utilizado com Python ou é útil para quem usa Python? Está esperando o que? Publica logo, que estou louco para ler...

Ivanelson Nunes

unread,
Aug 12, 2014, 12:18:23 PM8/12/14
to python...@googlegroups.com
Entendo! Assim seria mesmo algo com Qt, de preferência Qt5, QML,etc... Mas parece que você citou acima que não quer usar o Qt.

@ivanelson
[]s


Em 12 de agosto de 2014 05:54, Gileno Alves <gasc...@gmail.com> escreveu:

WIll FIlho

unread,
Aug 12, 2014, 2:05:06 PM8/12/14
to python...@googlegroups.com
Então Gileno, visto a sua dúvida e que em meio a diversos comentários não chegamos a uma conclusão concreta, compartilharei o que realmente há. Como já citado, em outros frameworks de outras linguagens como por exemplo o JavaFx, da linguagem Java :P é possível realizar isto que você deseja. No Python isso é possível através tanto do framework PyQt quanto PySide, pois ambos são originários do Qt e também pelo fato do Qt possibilitar essa ação. A documentação do Qt traz uma abordagem muito boa sobre isso, que você poderá aplicar facilmente nas suas aplicações com Python. Um exemplo prático disso: self.setStyleSheet("QPushButton{background-color:#000000;color:#FFFFFF}). No exemplo anterior eu estou inserindo um plano de fundo preto e uma cor do texto branca para todos os botões da minha janela. Também é possível inserir o HTML diretamente na criação dos objetos, como por exemplo: self.meu_label = QLabel("<b>Hello</b> <i>World</i>",self). Caso você deseje realmente utilizar o CSS e o HTML para criar o design da sua aplicação, sugiro que tente eliminar o HTML para não deixar o seu código sujo, e também separe todo o design CSS em um arquivo CSS e apenas abra-o dentro do método setStyleSheet. OBS: nem todas as keywords do css são reconhecidas. Apesar de ser possível utilizar o CSS e o HTML para criar o design das suas aplicações, existem soluções ainda melhores e mais práticas, como é o exemplo da utilização do QML nas suas aplicações. O QML é uma linguagem de marcação baseada no Javascript, que inclusive é própria do Qt, sendo assim suportada também pelo PyQt e PySide. No .NET por exemplo, nós podemos utilizar o WPF que permite criar o design em XAML e o code behind em C#/VB.NET. O Qt incorpora algo bem parecido, porém com o QML. É muito mais simples e prático criar todo o design da sua aplicação com o QML do que com o HTML e CSS, pois o Qt(neste caso lê-se PyQt e PySide) já possui módulos específicos para isso, além de você possuir uma maior liberdade e riqueza com relação a apresentação dos widgets na sua aplicação. Sem contar que o QML implementa diversas classes presentes no Qt(neste caso lê-se também PyQt e PySide) possibilitando uma maior interação e mais uma vez, liberdade. Ah, e uma dica, dê uma olhada no Qt5, pois existe uma série de novas mudanças que foram feitas. No Qt5 o módulo para utilizar o QML é o QtQML e no Qt4 o módulo para acessar o QML é o QtDeclarative. Infelizmente o PySide ainda não possui uma versão baseada no Qt5, somente o PyQt. Eu escrevi um post sobre as novidades do Qt5, caso deseje estará aí embaixo. É isso, espero que tenha ajudado :)
Abordagem do Qt sobre implementação do CSS:http://qt-project.org/doc/qt-4.8/stylesheet.html;

Gileno Alves

unread,
Aug 12, 2014, 2:51:11 PM8/12/14
to Python Brasil
Caramba nem consegui ler tudo, valeu mesmo pessoal, acho que vou até fazer um postagem no meu blog sobre isso tudo ai.

Eu peguei os links e vou ler com mais calma tudo para fazer uma análise, como muitas pessoas responderam eu vou responder a medida que for vendo os links.

Novamente, Thread muito boa.


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Gileno Alves

unread,
Aug 13, 2014, 8:42:21 AM8/13/14
to Python Brasil
@Rael gostei do link, não sabia que dava para fazer esse tipo de inserção dentro javascript que vai ser executado, dessa forma dá para fazer muita coisa boa.

@Sinval o kivy foi projeto para interfaces multitouch que não é o caso da minha aplicação no momento, quando eu chegar nesse nível aqui (https://play.google.com/store/apps/details?id=com.showgen.processcraft) ai vale a pena ver.

@Will valeu pela explicação, eu já tinha visto bem por alto essa questão da inserção do CSS mas agora já vale a pena dar uma testada já que a primeira versão está em Qt (PySide).

@flit sim esse é um caminho mas para esse projeto eu não tenho a liberdade de deixá-lo acessível via browser :(. O software parece muito bom, usa muitas bibliotecas científicas.

@Danilo obrigado pelo link, eu imaginei algo parecido com o 2 link, vou ler ele.

@Marcelo muito bom esse projeto não conhecia e acho que se não servir para esse projeto vai servir para outro que tenho em mente, valeu :)


Reply all
Reply to author
Forward
0 new messages