{"id":1088,"date":"2002-12-19T12:22:27","date_gmt":"2002-12-19T15:22:27","guid":{"rendered":""},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T03:00:00","slug":"","status":"publish","type":"post","link":"http:\/\/www.charles.pilger.com.br\/blog\/archives\/1088","title":{"rendered":"Criando uma aplica\u00e7\u00e3o Windows em Python"},"content":{"rendered":"<p>Criar uma aplica\u00e7\u00e3o Windows utilizando <a href=\\\"http:\/\/www.python.org\\\">Python<\/a> \u00e9 extremamente simples. A primeira coisa que \u00e9 necess\u00e1rio \u00e9, obviamente, <a href=\\\"http:\/\/www.python.org\/download\/download_windows.html\\\">instalar o Python<\/a>. Feita a instala\u00e7\u00e3o cria-se uma aplica\u00e7\u00e3o <a href=\\\"http:\/\/www.pythonware.com\/library\/tkinter\/introduction\/\\\">usando o tkinter<\/a>, que \u00e9 a biblioteca padr\u00e3o para GUI do Python. Por exemplo,  um Hello World: <\/p>\n<blockquote><p><tt># File: hello.py<br \/>\nfrom Tkinter import *<br \/>\nroot = Tk()<br \/>\nw = Label(root, text=\\\"Hello world!\\\")<br \/>\nw.pack()<br \/>\nroot.mainloop() <\/tt><\/p><\/blockquote>\n<p> Para executar ele basta salvar num arquivo <b>hello.py<\/b> (para manter as coisas organizadas vamos criar um diret\u00f3rio espec\u00edfico para isso: testpy) e ir na linha de comando. L\u00e1 voc\u00ea executa o seguinte comando: <\/p>\n<blockquote><p><tt>C:\\\\>cd testpy<br \/>\nC:\\\\testpy>python hello.py<\/tt><\/p><\/blockquote>\n<p> Nesse momento se abrir\u00e1 uma janela com o indefectivel \\&#8221;Hello World\\&#8221;. Utilizando o tkinter voc\u00ea pode contruir aplica\u00e7\u00f5es completas do ponto de vista gr\u00e1fico sem problemas, e com uma vantagem: s\u00e3o port\u00e1veis.<\/p>\n<p>Contudo o que estamos vendo aqui \u00e9 que queremos construir uma aplica\u00e7\u00e3o Windows usando Python. Assim sendo, n\u00e3o tem sentido fazer um aplicativo que voc\u00ea tem que instalar o interpretador da linguagem, caso voc\u00ea queira distribuir tal programa. Assim, o caso agora \u00e9 <a href=\\\"http:\/\/starship.python.net\/crew\/theller\/py2exe\/\\\">instalar o py2exe<\/a>, um gerador de execut\u00e1veis win32 para o Python. Feita a instala\u00e7\u00e3o \u00e9 necess\u00e1rio criar um arquivo de configura\u00e7\u00e3o para o py2exe poder trabalhar.<\/p>\n<p>Por exemplo, para gerar um execut\u00e1vel do nosso <b>hello.py<\/b>, \u00e9 necess\u00e1rio criar um arquivo <b>setup.py <\/b>com o seguinte conte\u00fado: <\/p>\n<blockquote><p><tt># setup.py<br \/>\nfrom distutils.core import setup<br \/>\nimport py2exe<\/p>\n<p>setup(name=\\\"hello\\\",<br \/>\n&nbsp; &nbsp; &nbsp; scripts=[\\\"hello.py\\\"],<br \/>\n)<\/tt><\/p><\/blockquote>\n<p> Note que esse \u00e9 o exemplo mais comum de um arquivo de setup. \u00c9 aconselh\u00e1vel dar uma boa olhada na documenta\u00e7\u00e3o para poder, entre outras coisas, atribuir um \u00edcone para o seu aplicativo&#8230; Uma vez criado o arquivo entre com o seguinte comando para iniciar a compila\u00e7\u00e3o: <\/p>\n<blockquote><p><tt>C:\\\\testpy>python setup.py py2exe -w<\/tt><\/p><\/blockquote>\n<p> No caso o par\u00e2metro <b>-w<\/b> est\u00e1 informando ao py2exe que voc\u00ea est\u00e1 criando uma aplica\u00e7\u00e3o Windows, e n\u00e3o uma aplica\u00e7\u00e3o que vai rodar dentro de uma janela modo texto.<\/p>\n<p>Feita a compila\u00e7\u00e3o voc\u00ea ver\u00e1 que foram criados dois diret\u00f3rios: build e dist. O diret\u00f3rio <b>build<\/b> cont\u00eam as bibliotecas que foram utilizadas para a compila\u00e7\u00e3o do aplicativo, e \u00e9 interessante manter elas para agilizar o processo de recompila\u00e7\u00e3o. No diret\u00f3rio <b>dist<\/b> est\u00e1 o aplicativo propriamente dito, no caso dentro do sub-diret\u00f3rio <b>hello<\/b>. Ali dentro voc\u00ea encontrar\u00e1, al\u00e9m do arquivo <b>hello.exe<\/b>, os arquivos necess\u00e1rios para a execu\u00e7\u00e3o do programa. Agora \u00e9 s\u00f3 pegar o diret\u00f3rio, <a href=\\\"http:\/\/www.jrsoftware.org\/isinfo.php\\\">empacotar<\/a> e distribuir o seu programa, de prefer\u00eancia com o c\u00f3digo-fonte junto, j\u00e1 aqui estamos compilando o c\u00f3digo n\u00e3o \u00e9 para esconder ele, mas sim para simplificar a vida do nosso futuro usu\u00e1rio, n\u00e3o? \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Criar uma aplica\u00e7\u00e3o Windows utilizando Python \u00e9 extremamente simples. A primeira coisa que \u00e9 necess\u00e1rio \u00e9, obviamente, instalar o Python. Feita a instala\u00e7\u00e3o cria-se uma aplica\u00e7\u00e3o usando o tkinter, que \u00e9 a biblioteca padr\u00e3o para GUI do Python. Por exemplo, um Hello World: # File: hello.py from Tkinter import * root = Tk() w = [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/www.charles.pilger.com.br\/blog\/wp-json\/wp\/v2\/posts\/1088"}],"collection":[{"href":"http:\/\/www.charles.pilger.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.charles.pilger.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.charles.pilger.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.charles.pilger.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1088"}],"version-history":[{"count":0,"href":"http:\/\/www.charles.pilger.com.br\/blog\/wp-json\/wp\/v2\/posts\/1088\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.charles.pilger.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1088"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.charles.pilger.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1088"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.charles.pilger.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}