wxPython – Introdução

abril 22, 2007 às 0:59 | Publicado em artigos, python, wxpython, wxwidgets | 5 Comentários

Em 1992, Julian Smart, lançou uma biblioteca escrita em C++: wxWindows, mas que devido pressões da Microsoft, o nome do projeto mudou para wxWidgets. A mesma implementa uma abstração da GUI (Graphical User Interface) para uma linguagem única que execute em diversas plataformas sem a necessidade de reescrita para cada. Essa biblioteca abstrai os elementos (widgets) de cada plataforma e o simplifica num única linguagem, sendo que com isso a portabilidade é principal foco.

Em 1998, Robin Dunn, anunciou o binding (porte) para python: wxPython.

Como a linguagem Python é uma ótima escolha para um desenvolvimento rápido, e wxWidgets uma ótima escolha para o desenvolvimento de uma interface rica de elementos e portabilidade, wxPython é a toolkit que une o útil ao agradável! 🙂

Apesar de ter diversas vantagens e desvantagens, cito apenas as principais:

Vantangens:

  • Portabilidade (Windows, Linux, Mac OS, entre outras)
  • Velocidade de desenvolvimento (Não chega a ser tão redundante quanto outras bibliotecas gráficas)
  • Simplicidade, atualizações de bugs & features (Tente outras toolkits em diversas linguagens, wxPython é uma das mais claras e menos burocráticas. E seu desenvolvimento é constante, sempre com novas features e bugs corrigidos)

Desvantagens:

  • Péssima documentação (Todas funções são documentadas, mas muito confusas e não claras)
  • Desempenho inferior (Pelo fato de ser interpretado e tudo ser uma abstração, é claro que não se compara a velocidade de um codificado nativamente)
  • Falta de Informação (Apesar de um bom wiki, não há muitas iniciativas em prol, muito menos brasileiras. Esse é o principal motivo que me leva a escrever sobre)

Agora vamos a prática que interessa. Como ambiente de desenvolvimento estou usando o Ubuntu Feisty 7.04.
Para preparar nosso ambiente de trabalho, vamos prosseguir:

ip_fix@konoha:~$ sudo apt-get install libwxbase2.8-0 libwxgtk2.8-0 python-wxversion python-wxgtk2.8 wx2.8-examples wx2.8-doc

Assim temos todas libs e dependências satisfeitas. Agora vamos testar pra ver se ficou tudo realmente OK. Para quem quiser baixar e compilar a partir do fonte, deve primeiro baixar o wxWidgets e em seguida o próprio wxPython

ip_fix@konoha:~$ python
Python 2.5.1c1 (release25-maint, Apr 12 2007, 21:00:25)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import wx
>>> wx.__version__
'2.8.1.1'
>>>
ip_fix@konoha:~$

Sim! Tudo está OK! O módulo wx foi importado e a versão foi exibida através de seu atributo especial (__version__). Já é o suficiente para prosseguirmos.

ip_fix@konoha:~$ python
Python 2.5.1c1 (release25-maint, Apr 12 2007, 21:00:25)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import wx
>>>
>>> app = wx.PySimpleApp()
>>> frame = wx.Frame(None, -1, "wxPython r0x! =)")
>>> frame.Show()
True
>>> app.MainLoop()
>>>
ip_fix@konoha:~$

Acompanhe o resultado na figura abaixo:

wxPython - Introdução

Sim! Com apenas 3 linhas temos uma “janela”!

Um objeto foi criado para a aplicação em si; declaramos outro objeto para um frame com seu título definido no atributo; setamos o frame como ‘visível’; e por fim entramos no looping infinito que permanece exibindo a aplicação.

Claro que irei explicar melhor, mas no próximo post, aí temos somente código, vários exemplos e explicações.É isso, quero ver críticas, dúvidas e sugestões! São sempre bem-vindo todas! 😀

Anúncios

5 Comentários »

RSS feed for comments on this post. TrackBack URI

  1. claro claro… aham…. disso eu ja sabia faz tempo… que desatalizado que tu é seu ipfix…

  2. Huahuaha, nem sabia q tinha isso pra python, bom tbm nao mexo com python, to lembrando agora…acho q ja vi isso quando fui testar o beryl, tem uns scripts python, acho q usam isso, nao lembro…ehehe, flw

  3. Ola fera, visitei seu blog e percebi assuntos sobre wxWidgets. Não tenho idéia se pode me ajudar, mas esta sendo difícil achar blogs para esse tema.

    Bem estou mexendo com o wxDEVC++ 6.10.1, criei um frame e dentro deste frame um campo de escrita (Memo). Meu problema esta com a tecla TAB.

    Quando aperto a tecla TAB, teoricamente esta tecla ocupa 8 espaços. Mas nem sempre ela ocupa esse tamanho. As vezes ocupa 3, 4, 5 espaços.

    Pretendia que essa tecla ocupasse sempre 8 espaços.
    Ou desativar a tecla TAB dentro do Memo, ou fazer com que a tecla TAB fosse igual a tecla ENTER.

    Cara estou apanhando muito, como percibi que gosta muito de programação, resolvi pedir uma ajudinha …

    Consegui fazer um tratamento com a tecla TAB apenas para o FRAME. Para o campo Memo não achei nenhum evento assim.

    FRAME … qdo aperto a tecla TAB no FRAME aparece a msg erro de gravaçao

    void Cabecalho::CabecalhoChar(wxKeyEvent& event)
    {
    int keyCode = (int)event.GetKeyCode();
    if (keyCode == WXK_TAB){
    wxMessageBox(wxT(“Erro de gravação!”),wxT(“Erro”), wxICON_ERROR);
    }
    }

    MEMO
    void Cabecalho::memoPrincipalUpdated3(wxCommandEvent& event)
    {

    //o evento wxCommandEvent não tem a opção de trabalhar com o keyCode

    }

    Se puder me ajudar ou me indicar algum forum de ajuda a respeito sobre wxDEVC++ …

    Valeu, desculpa a amolação.

  4. Rapaz! Sobre o wxDEVC++ nunca vi, mas quem pode te ajudar é o Just, ele programa em wxWidgets mesmo em C++. Pega o endereço dele: http://jpjust.blogspot.com/

    flw!

  5. Você precisa decidir se vai escrever em português ou inglês.

    Em informática, assim como na minha área, engenharia eletrônica há muitos termos da língua inglesa que são aceitáveis. Porém utilizar ‘binding’,’sempre com novas features’ (essa doeu a leitura. Algum problema com a palavra características?) entre outras, demonstra subdesenvolvimento que beira o colonialismo.

    Não sou contra a globalização, mas para isso é melhor publicar em inglês.

    A intenção não foi parecer rude, mas eu sou transparente em minhas opiniões.


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Crie um website ou blog gratuito no WordPress.com.
Entries e comentários feeds.

%d blogueiros gostam disto: