Faremos um pequeno programa com PyGTK 3.0 que também funciona para PyGTK 3.4. Esta pequena GUI ensinará como dividir um programa em dois ou mais arquivos.
Você pode visitar o tutorial de Sebastian Pölsterl sobre o novo PyGTK 3, aqui está o novo tutorial, deixo o link:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
Este é o blog do Sebastian.
Uma crítica a este tutorial de Sebastian é que ele não ensina como dividir um programa em partes ou em vários arquivos, teria sido bom se ele mostrasse um exemplo de como fazê-lo com o PyGTK 3.
Todos os programas grandes e complexos são divididos em vários arquivos e os arquivos são até colocados em outros diretórios, ou seja, estão localizados em pastas diferentes.
Vamos começar com um pequeno exemplo:
Aqui está o código de escrita em um único arquivo chamado gui.py. Abrimos o editor de texto Gedit ou o editor que mais usamos, copiamos o código abaixo e salvamos como gui.py
from gi.repository import Gtk class gui (): def on_open_clicked (self, button): print "\" Open \ "botão foi clicado" def on_close_clicked (self, button): print "Fechando aplicativo" Gtk.main_quit () def __init__ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk.main_quit) self.box = Gtk.Box () self.window.add (self.box) self. button = Gtk.Button (label = 'Open') self.button.connect ("clicked", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = 'Close') self.button.connect ("clicked", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()
def on_open_clicked (self, button): imprimir o botão "\" Abrir \ "foi clicado"
É uma função que se ativa no terminal quando clicamos no botão abrir. O sinal para ativá-lo é:
self.button.connect ("clicked", self.on_open_clicked) def on_close_clicked (self, button): print "Fechando aplicativo" Gtk.main_quit ()
É uma função que é ativada quando clicamos no botão Fechar.
feche o programa que executamos.
o sinal para ativá-lo é
self.button.connect ("clicked", self.on_close_clicked) de gi.repository import Gtk ### invocamos as bibliotecas PyGTK ### class gui (): ### definição de classe chamada gui é a classe principal # ##
Declaração de Widgets: um widgets é um programa predeterminado pelas bibliotecas GUI que usamos. Por exemplo, um widget é um botão, uma janela, uma caixa, etc. Estes são os widgets que declaramos em nosso programa.
self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Abrir') ### # botão de abrir #### self.button = Gtk.Button (label = 'Fechar') #### botão de fechar #### self.window.add (self.box) #### a caixa está contida em a janela chamada janela #### self.box.pack_start (self.button, True, True, 0) ##### o botão está contido na caixa chamada caixa ### self.window.show_all () ## # mostramos a janela inteira ### gui = gui () ### criar um objeto gui ####
Colocamos nosso programa em uma pasta chamada simples no nosso caso na área de trabalho
Abrimos a pasta com o terminal, no meu caso uso o Nemo do Linux Mint 14.
Para compilar, colocamos no terminal python gui.py
Veja a imagem.
Agora podemos ver nosso pequeno programa ou novo widget criado com as bibliotecas PyGTK 3
É uma janela simples com dois botões.
Agora dividimos o programa em três partes, então deixo o código para os três arquivos.
Primeiro arquivo gui.py
from gi.repository import Gtk de destroy import destroy from io import io classe gui (destroy, io): def __init __ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk .main_quit) self.box = Gtk.Box () self.window.add (self.box) self.button = Gtk.Button (label = 'Open') self.button.connect ("clicked", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button (label = 'Fechar') self.button.connect ("clicked", self.on_close_clicked) self.box.pack_start ( self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()
Segundo arquivo io.py
classe io: def on_open_clicked (self, button): print "\" Abrir \ "o botão foi clicado"
Terceiro arquivo destroy.py
from gi.repository import Classe Gtk destroy: def on_close_clicked (self, button): print "Fechando aplicativo" Gtk.main_quit ()
Colocamos os três arquivos na mesma pasta, no nosso caso, a pasta é chamada de divisão simples.
Para compilar os três arquivos. Abrimos a pasta com o terminal e simplesmente a colocamos de volta no terminal
python gui.py
Modificações feitas no código gui.py
from destroy import destroy ### instrução para importar nosso arquivo destroy.py ### from io import io ### instrução para importar nosso arquivo io.py ### class gui (destroy, io): #### para a classe main, adicionamos as subclasses destroy e io ####
Você pode ver que a frase
def on_open_clicked (self, button): imprimir o botão "\" Abrir \ "foi clicado"
Não está no gui.py, está no arquivo io.py
A sentença
def on_close_clicked (self, button):
imprimir "Fechamento de aplicativo"
Gtk.main_quit ()
está localizado no arquivo destroy.py
Assim, podemos dividir um programa em vários arquivos localizados em diferentes diretórios ao mesmo tempo.
Por outro lado, Python é um pilar do software livre, e está adaptado para funcionar com GTK 3.6 /3.8, seu nome é PyGTK. A adaptação do Python para o KDE é chamada de PyQT.
Python é adaptado para Mac OS e WINDOWS.
Espero que este mini tutorial do PyGTK3 tenha sido útil para você. Eles podem fazer todas as críticas construtivas que quiserem.
Eu também conheço alguns Gtk 3.4 /3.6 e Vala GTK 3.4 / 3.6.
http://www.youtube.com/watch?v=9ckRn_sx8CE
Por último, os usuários do KDE pedem desculpas por não fazer um mini tutorial para o KDE.
No kde, prefiro usar o kdevelop (acho que é assim que se chama) para criar a interface do usuário à vontade, mas ainda tenho dificuldade em encontrar os processos para que isso aconteça x coisa: '(
Ótimo para aqueles de nós que usam Python: D!
Saudações!
Olá, sigo esta comunidade há muito tempo e não tenho muita certeza se esta é a primeira vez que comento ou já o fiz antes 😀 (não sou muito dado a escrever comentários na web). O fato é que eu faço isso para deixar uma sugestão para Elav e KZKG ^ Gaara como administradores, e acho que seria uma boa ideia adicionar um plugin para colorir sintaxe agora que ultimamente vejo mais posts com código em diferentes linguagens de programação. Sei que existem alguns plug-ins, mas não experimentei nenhum porque não sou um usuário do wordpress, então deixo que vocês pensem na viabilidade da solicitação. Aproveito para perguntar ao restante dos leitores o que acham da ideia, pois sei que existem pessoas por aí que preferem ler o código sem nenhum adorno. Peço desculpas se isso já foi comentado aqui e foi rejeitado por algum motivo, pois não me lembro de ter visto nenhuma discussão sobre o assunto.
A verdade é que gostaria de ter a opção de colorir a sintaxe para destacar o código das linguagens de programação.
Isso ajudaria os usuários que desejam aprender linguagens de programação.
Mas hey, também estou confortável com o fórum e que podemos discutir e aprender juntos.
GNU Emacs é mais confortável, já que pelo menos você tem que escolher em qual verificador de linguagem de programação deseja trabalhar (se você não quer mais peso para seu processador, use GNU Nano e desfrute do minimalismo no seu melhor).
Elio estamos falando de WordPress. Implementado no blog Desde Linux. Não possui funções para colorir as letras dos posts.
Oh, me desculpe.
Naaa emacs é confortável para quem tem 84 dedos XD .., pessoas normais, textmate, sublimetext ou notepad ++ xd
O implausível é não ter aprendido a digitar, o que é necessário para ser capaz de lidar bem com o GNU Emacs e seus atalhos de teclado. Além disso, sua GUI facilita o uso de seus menus (pode ser usado no Windows, mas não é recomendado fazê-lo no modo normal, mas sim no modo prompt de comando para que o win32 não boicote seu script).
Tutorial muito legal. Mas, a propósito, o código-fonte python não é compilado, é uma linguagem interpretada.
Ele pode ser compilado em pseudo código. Não é uma linguagem de máquina, mas bytes que representam algo para o interpretador, mas o processo também é chamado de compilado. Nesse sentido, pode-se dizer que algo está compilado.
Talvez seja melhor aprender pytgk2 porque a versão mais recente disponível para Windows é a 2.24. A Série 3 se destaca por sua ausência. E as línguas ruins dizem que o gnomo quebra todas as ápis a cada nova versão.
Eu programo um mockup com GTK 3.4 / 3.6 e a verdade é que eles quebram sua paciência e sua cabeça, você tem que reescrever o código, agora entendo porque o pessoal do Linux Mint reclama do GTK e do projeto GNOME.
Para os do MINT concordo com o GTK 2.4 isso não aconteceu.
Bom tutorial e referências.
Apenas um detalhe, uma vez que o código foi inserido, no Python as indentações são obrigatórias e devem ser respeitadas no código de exemplo.
Saudações!
Você pode explicar em que consistem as identificações obrigatórias em Python? Digo a verdade, nunca ouvi isso. Estou muito acostumado com os fóruns PyGTK 2/3 em inglês e talvez não os tenha percebido.
Em Python você não usa chaves como em C ou blocos de início / fim como em Pascal, mas tudo é entendido através da indentação que você dá ao código. Ou seja, os blocos são reconhecidos por serem indentados. É um recurso que adoro particularmente. Você evita escrever chaves e coisas assim.
Eu simplesmente não gosto disso, parece mais simples colocar duas pequenas chaves ou um std :: endl;, do que ser visto se a linha xd está bem tabulada
: p Seu professor de programação colocará um 0 para você. Ou pior, eles irão despedi-lo do seu emprego. O que mais importa é que o código seja legível com tudo o que isso implica
terminando com colchetes, isso me torna muito mais legível XD ..
A sério???
int main(int argc, char *argv[]){program_name = argv[0];while ((argc > 1) && (argv[1][0] == '-')) {switch (argv[1][1]) {case 'v':verbose = 1; break;case 'o':out_file = &argv[1][2];break;case 'l':line_max = atoi(&argv[1][2]);break;default:fprintf(stderr,"Bad option %s\n", argv[1]);usage();}++argv;--argc;} if (argc == 1) {do_file("print.in");} else {while (argc > 1) {do_file(argv[1]);++argv;--argc;}}return (0);}
Entende? Sem indentações, não é muito bem compreendido. E essa é fácil. Com um mais complexo, apenas o compilador o entende. O fato é que, já que você TEM que indentar de qualquer maneira (para que os humanos entendam o código), por que você teria que ser redundante e usar separadores? Chega de indentação e é isso.
Claro, nada é entendido, pois você não está respeitando as regras de boa escrita para um programa em c / c ++. O que você fez é válido para qualquer coisa, como aninhar uma função, dentro de uma função dentro de outra função que está dentro de outra, então eu quero ver você xd se você consegue entender.
aliás, com dois olhares, esse código é facilmente compreensível xD
O que fiz foi de propósito para mostrar a vocês que sem indentação, embora compile, é extremamente difícil entender qualquer código. Portanto, você tem 2 regras: Recuar e englobar com delimitadores. Mas isso é redundante. Em Python, esse código simplesmente não é aceito pelo interpretador. E você só tem uma regra: Recuar. Fácil.
Mas hey, todos com seus gostos.
Ambos são bons, os indentados e os não indentados, na minha opinião prefiro o estilo ponto-e-vírgula ou rubi, semelhante ao python mas o indentação não é necessário.
É assim que é melhor entendido: P:
echo 'int main (int argc, char * argv []) {program_name = argv [0]; while ((argc> 1) && (argv [1] [0] ==' - ')) {switch (argv [ 1] [1]) {caso 'v': verboso = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; default: fprintf (stderr, »Opção inválida% s \ n », argv [1]); usage ();} ++ argv; –argc;} if (argc == 1) {do_file (" print.in ");} else {while (argc> 1) { do_file (argv [1]); ++ argv; –argc;}} return (0);} '| perl -p -e 's / \ {/ \ {\ n \ t / g; s / \; / \; \ n \ t / g; s / \ t \} / \} / g;'
Saudações 😀
Acho que Carlos quer dizer que onde o código sai não há travessões. Isso com copiar e colar simplesmente não funciona. Não sei se a tag existe ao criar uma postagem
para inserir o código do idioma. Seria bom se colocassem se não existe.
Eu já vi qual é o problema: a CODE Tag remove todos os espaços e tabulações (não deveria fazer isso !!!) Mas se você colocar um nbsp nela, o código parece bom. A0 em hexadecimal (160 em dez) embora eu ache que pode depender da fonte (não sei). Se for usado, ficará assim:
def fib(n):
a, b = 0, 1
while a < n:
print(a)
a, b = b, a+b
Isso nos meus testes parece bom, mas eu não tenho uma visualização quando posto as respostas (e deveria haver !!!) Se não sair, não é minha culpa
Veja os exemplos que Sebastian Pölsterl coloca em seu tutorial do PyGTK 3, Sebastian não coloca rótulos.
Exemplo:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example
você pode ver todo o tutorial de Sebastian.
Não sei a que se refere. O que estou dizendo é que aqui, nos posts, não é possível usar a Tag HTML «CODE» para que o que você coloca como código saia bem recuado. Na página que você consultar, se você vir as fontes da página, verá que ela não usa CODE, mas usa outros delimitadores HTML.
Não é contra o código que você colocou, mas sim apontando uma falha no sistema de postagem deste site. O que, talvez, os administradores possam consertar.
Quando falo sobre tags, obviamente estou falando sobre HTML, não Python. Em qualquer caso, se você colocar código sem indentação no Python, ele simplesmente não funcionará. Se um novato vier e copiar o código conforme aparece nesta postagem e tentar executá-lo, ele falhará. Você pode estar frustrado por ser um novato. Novamente, a culpa não é sua; e na minha resposta anterior imediata o que fiz foi dar uma maneira de resolver o problema a partir do nível de usuário que posta.
Você está absolutamente certo, eu deveria ter enviado fotos em vez de copiar o código.
para mostrar como as instruções são ordenadas corretamente no PyGTK 3.
Para programar com python, recomendo usar Eclipse com o plugin PyDev, ou Pychar m
Como comentado acima, é exatamente por isso que não gosto de python, por causa do problema de indentação. Como vimos, copiar e colar não funcionará, o que não acontece com outras linguagens como C, Java, PHP, etc.
A questão da legibilidade, aplicamos um embelezador de código (como http://indentcode.net/ ) e pronto,
O feio está consertado, mas se não houver recuo e a lógica for alterada, a gente soa ...
Eu sou novo no PyGTK, é possível interagir com scripts de shell neste idioma?
Obrigado pelo tutorial.
Saudações.