Como criar programas ''reais" em python

Iniciado por Cleiton Nunes, 12 de Fevereiro de 2013, 21:22

tópico anterior - próximo tópico

Cleiton Nunes

 Olá, faz algum tempo que comecei estudar a linguagem de programação python por conta própria com material como livros e tutoriais que fui catando pela internet, no entanto todos os programas que criei até agora são basicamente "calculadoras" para encontrar a solução de diversos tipos de situações diferentes, tudo com dados que insiro através de um terminal e do qual obtenho os resultados em forma de texto também pelo terminal. Mas ai entra a minha dúvida:  beleza, eu já sei fazer umas coisas bacanas, compreendi como funciona a lógica de programação (eu acho), conheço a sintaxe e sei detectar os difersos tipos de erros. Mas e ai? e seu eu quiser criar um "programa real" como por exemplo um leitor de pdf ou ainda um player de música com janelinhas, botões e etc, como eu faço? O que eu tenho que aprender agora?
   Estou tendo muita dificuldade para encontrar material com coisas diferentes das que já aprendi até agora, mas o que eu sei não me parece ser suficiente para criar um programa propriamente dito, gostaria de uma orientação de algum programador profissional para que me indica - se qual o próximo passo devo dar para se um dia quiser me tornar um programador profissional.
Trisquel GNU/Linux 7.0 http://trisquel.info/ on Intel i3, 8GB RAM, HD graphics 3000 and 500GB hard disk.

eliseu_carvalho

#1
Aí não é só Python, é também GTK, Glade, etc.
Pelo que sei, o Python puro é pra fazer programas em modo texto. Se quiser desenvolver interfaces, tem que instalar o Glade via Central de Programas, Synaptic ou apt-get.

Cleiton Nunes

GTK e glade são criadores de interface? fazem a mesma coisa ou são coisas diferentes?
Trisquel GNU/Linux 7.0 http://trisquel.info/ on Intel i3, 8GB RAM, HD graphics 3000 and 500GB hard disk.

eliseu_carvalho

GTK é uma das várias bibliotecas usadas no desenvolvimento de interfaces. Por exemplo: GNOME é baseado em GTK. Já o Glade é, acho eu, uma ferramenta mais voltada pra criar interfaces de programas.
Bom... Desenvolvimento não é muito a minha praia, então acho que alguém mais experiente pode ajudar melhor.

Darcamo

Você pode criar toda a interface gráfica com a biblioteca GTK criando tudo do zero (comandos para criar as janelas e botões, colocar os botões nas janelas, etc).
Só que projetar algo "gráfico" apenas "programando via texto" não é muito prático.

É aí que entra o glade. Você cria a parte "visual" da GUI toda nele e ele salva um arquivo (um arquivo xml, se não me engano) que basicamente descreve como é sua interface gráfica. Depois, usando uma função própria da biblioteca GTK (pyGTK, já que estamos falando de Python) você carrega esse arquivo e programa o resto, ou seja, a lógica da interface gráfica. Algo como "ao clicar no botão 'CoolButton' que criei no Glade execute a função 'cool_function' que criei.

Outra biblioteca bastante conhecida para criar interfaces gráficas é a QT (pyqt para Python). Assim como a GTK, com a QT também dá para criar a interface gráfica de maneira visual usando o qt-designer.

Claro que a interface gráfica não é tudo. No seu exemplo de "leitor de PDF" você precisa "ler o arquivo PDF" e como não faz sentido você reimplementar todo o padrão PDF novamente então você também deverá usar uma biblioteca para isso, no caso a melhor opção provavelmente e a poppler (mesma biblioteca que o Evince usa).

Minha sugestão, escolha primeiro uma biblioteca para criar as GUIs como a GTK ou a QT (tem outras, mas essas são as mais usadas) e tente criar algo que não precise de outras bibliotecas além delas por enquanto. Que tal uma "calculadora gráfica" com as quatro operações fundamentais.   ;D

Assim vc vai entender o básico de criar interfaces gráficas. Depois disso você pode partir para algo mais. Que tal um player bem simples de música?

Adriano R.N.

Não entendo nada de programação, por isso se não gostar ignore tudo.
Uma dica do Stallman é que os programadores não percam tempo fazem pequenos códigos, mas sim, que estudem grandes códigos e deem pequenas contribuições.
Seguindo este pensamento, seria interessante você baixar o código fonte de algum aplicativo escrito em python e estudá-lo.
Boa sorte e Muito AXÉ!!!

Darcamo

CitarNão entendo nada de programação, por isso se não gostar ignore tudo.
Uma dica do Stallman é que os programadores não percam tempo fazem pequenos códigos, mas sim, que estudem grandes códigos e deem pequenas contribuições.
Seguindo este pensamento, seria interessante você baixar o código fonte de algum aplicativo escrito em python e estudá-lo.

Isso é para quem já sabe programação e quer contribuir com algo. Realmente criar programas simples que ninguém use será uma contribuição menor do que fazer pequenas melhorias em um programa mais complexo que muita gente usa.

Mas no caso do Cleiton Nunes, que está aprendendo, acho que é exatamente o contrário. O ideal é começar com coisas pequenas para poder entender. Ou seja, dividir para conquistar.

Sugeri a "calculadora gráfica" para limitar o aprendizado a como criar interfaces gráficas. Não que seja muito complicado, mas é muita informação para quem nunca mexeu com isso e se misturar com mais coisas ainda pode ficar complicado demais. Por exemplo, é perfeitamente possível baixar o código fonte do player de música Exaile, que é feito em Python (http://www.exaile.org/download/) e tentar entendê-lo, mas aí você estaria tentando aprender ao mesmo tempo como criar interfaces gráficas (biblioteca GTK), como tocar arquivos de música (gstreamer), como editar as tags das músicas (mutagen), como baixar dados da internet (ele deve baixar as capas de música), e por aí vai.

Cleiton Nunes

#7
Citação de: Darcamo online 13 de Fevereiro de 2013, 13:39
Você pode criar toda a interface gráfica com a biblioteca GTK criando tudo do zero (comandos para criar as janelas e botões, colocar os botões nas janelas, etc).
Só que projetar algo "gráfico" apenas "programando via texto" não é muito prático.

É aí que entra o glade. Você cria a parte "visual" da GUI toda nele e ele salva um arquivo (um arquivo xml, se não me engano) que basicamente descreve como é sua interface gráfica. Depois, usando uma função própria da biblioteca GTK (pyGTK, já que estamos falando de Python) você carrega esse arquivo e programa o resto, ou seja, a lógica da interface gráfica. Algo como "ao clicar no botão 'CoolButton' que criei no Glade execute a função 'cool_function' que criei.

Outra biblioteca bastante conhecida para criar interfaces gráficas é a QT (pyqt para Python). Assim como a GTK, com a QT também dá para criar a interface gráfica de maneira visual usando o qt-designer.

Claro que a interface gráfica não é tudo. No seu exemplo de "leitor de PDF" você precisa "ler o arquivo PDF" e como não faz sentido você reimplementar todo o padrão PDF novamente então você também deverá usar uma biblioteca para isso, no caso a melhor opção provavelmente e a poppler (mesma biblioteca que o Evince usa).

Minha sugestão, escolha primeiro uma biblioteca para criar as GUIs como a GTK ou a QT (tem outras, mas essas são as mais usadas) e tente criar algo que não precise de outras bibliotecas além delas por enquanto. Que tal uma "calculadora gráfica" com as quatro operações fundamentais.   ;D

Assim vc vai entender o básico de criar interfaces gráficas. Depois disso você pode partir para algo mais. Que tal um player bem simples de música?

Baixei o glade e o qt design para já ir aprendendo, por enquanto to usando um pouco dos dois pra ver com qual me familiarizo melhor hehe, depos pretendo me aprofundar em um deles. Obrigado pelas dicas  ;D
Trisquel GNU/Linux 7.0 http://trisquel.info/ on Intel i3, 8GB RAM, HD graphics 3000 and 500GB hard disk.

GBecker

O lado bom do glade, é que ele gera um xml com a especificação do que foi criado. Então na aplicação, só le esse xml. A vantagem é que, pequenas mudanças na interfce, não obriga a recompilar toda a aplicação.

julianofischer

Você pode utilizar PyQt4, PyGTK ou Tkinter para construir interfaces gráficas com Python no Linux.

BrunoPT

O melhor é o PyQT, tens uma IDE muito boa que é o Eric.

Se precisares de ajuda manda-me MP e eu dou-te o meu e-mail/GTalk