Pergunta

Pergunta simples:

  • O Python GUI APIs estão lá fora e quais são as vantagens de qualquer API?

Eu não estou olhando para uma guerra religiosa aqui, estou apenas querendo obter um bom controle sobre tudo o que está lá fora em termos de Python GUI APIs.

Foi útil?

Outras dicas

Eu usei Tkinter e wxPython. Tkinter é bastante básico, e não usa widgets nativos. Isto significa que aplicações Tkinter terão a mesma aparência em qualquer plataforma - isso pode soar atraente, mas na prática, isso significa que eles olham feio em qualquer plataforma: - / No entanto, é muito fácil de usar. Eu encontrei Pensando em Tkinter muito útil quando eu estava aprendendo, porque eu nunca tinha feito qualquer programação GUI antes. Se as coisas como quadros e algoritmos de layout e botões e ligações são familiares a você, porém, você pode pular essa etapa.

Você pode aumentar Tkinter com Tix (mas ser avisado, não Tix não jogar bem com py2exe). Também check out Python Megawidgets, que constrói alguns controles mais avançados usando o básico Tkinter.

Finalmente, Tkinter joga bonito com o shell: você pode iniciar o intérprete, fazer coisas como 'tkinter importação' 'tk = tkinter.Tk ()' etc. e construir o seu GUI interativa (e será sensível). (Acho que isso não funciona se você usar o IDLE, embora)

wxPython é muito mais bonito, e vem com uma gama maior tanto dos controlos. É multi-plataforma (embora pareça um pouco mimado no meu Mac) e usa controles nativos em cada plataforma. É um pouco confuso, no entanto. Ele também vem com uma aplicação de demonstração que mostra a maioria de suas características, e fornece um banco de ensaio para você experimentar. Algumas reflexões específicas sobre wxPython:

  • Existem três (?) Maneiras diferentes para colocar widgets de fora. Ignorar dois deles; basta usar Sizers. E mesmo assim, você pode fazer praticamente qualquer layout usando apenas BoxSizer e GridBagSizer.
  • Todos wxwidgets têm IDs. Você não precisa se importar com o que os IDs são, mas nos velhos tempos (eu acho) que você tinha necessidade de saber, de modo algum código antigo será repleta de atribuições ID explícitas. E o mais código de demonstração terá -1 em todos os lugares como o parâmetro de ID (apesar do fato de que os métodos têm ID como um parâmetro de palavra-chave que o padrão é -1 de qualquer maneira).
  • Certifique-se de obter os wxWidgets docs padrão, bem como o wxPython Demo -. Você precisa de ambos
  • Se você quiser usar wxPython com py2exe e você quer olhar bom no Windows XP, você precisa de um pouco de malandragem em sua setup.py. Consulte aqui

PyQt é excelente se você tem experiência ou interesse em Qt.

http://www.riverbankcomputing.co.uk/software/pyqt/intro

A maioria das APIs python GUI será wrappers em torno dos mais comum c / c ++ GUI APIs. Você tem um invólucro de python para GTK, um invólucro de python para qt, um invólucro de python para .NET, etc etc.

Então, realmente depende de quais são suas necessidades. Se você está procurando a maneira mais fácil para desenhar widgets nativos de aparência no Linux, Mac e Windows, em seguida, ir com wxPython (Wrapper python para WX Widgets). Se multi-plataforma não é uma das suas necessidades, porém, outras bibliotecas pode ser mais útil.

Em vez de enviar uma lista de suas opções Vou dar minha humilde opinião:

Eu estou no amor com wxPython.

Eu tenho usado Qt em C ++ e Tk caminho de volta nos dias Tcl mas o que realmente faz-me como wxPython é a demonstração de que você começa com ele. Na demo você pode navegar através de todos os quadros diferentes de widgets etc que fazem parte do quadro ver o código fonte e realmente ver como ele olha enquanto está em execução.

Eu tive alguns problemas para obter a versão de compilação Linux e instalados, mas agora que eu tê-lo disponível eu usá-lo o tempo todo. Eu tenho usado wxPython para aplicações de análise de dados pequeno e eu ter escrito várias ferramentas internas relacionadas à comparação dos resultados dos testes, a fusão de código fonte etc.

Eu encontrei este link muito tempo um ir: http://www.awaretek.com/toolkits .html . Ele sugere uma tookit com base em seus critérios. Para mim, isso sugere wxPython o tempo todo. De qualquer forma dá-lhe um monte de notas sobre os vários toolkits. O que é certo para mim pode não ser bom para você. Mas dá-lhe como todos os tookits pontuados de acordo com os seus critérios, por isso, se você não gosta do topo kit de ferramentas, por algum motivo você pode ver quais estão mais próximos aos seus critérios.

QT / GTK / WxWidgets (anteriormente wxWindows) parecem estar entre os mais maduros toolkits plataforma GUI cruzadas. O único problema é que nenhum é instalado com a instalação padrão do Python, assim você pode ter para compilar as bibliotecas. Se você quiser algo com nenhuma instalação necessária que apenas corridas, então vá com tkinter porque, como tem sido mencionado ele é instalado por padrão com o Python.

De qualquer forma os meus critérios foram 9 na facilidade de uso, 10 na maturidade da documentação / widgets, 10 na base instalada, 5 em geradores de código gui, 10 no look and feel nativo para ambas as janelas / linux e 1 e 5 para o último dois, eu não sou grande em Mac OSX (mesmo com um 10 aqui sugere wxpython).

PythonCard é realmente fácil de usar. Isso é o que eu recomendaria.

Aqui está a sua writeup:

PythonCard é um kit de construção GUI para a construção de área de trabalho multi-plataforma aplicações no Windows, Mac OS X, e Linux, usando a linguagem Python.

O lema PythonCard é "coisas simples deve ser simples e complexos coisas deve ser possível. "

PythonCard é para você se você quiser desenvolver aplicações gráficas rapidamente e facilmente com um mínimo de esforço e codificação. HyperCard da Apple é um de nossas inspirações; simples, mas poderoso.

PythonCard usa wxPython. Se você é já está familiarizado com wxPython, apenas pensar em PythonCard como uma maneira mais simples de fazer programas wxPython com um monte de amostras e ferramentas já no lugar para você copiar e subclasse e ferramentas para ajudá-lo a construir aplicações multi-plataforma.

EasyGUI é diferente de outras GUIs em que EasyGUI não é orientada a eventos. Ele permite que você programa de uma forma linear tradicional, e colocar-se diálogos para entrada e saída simples quando você precisa. Se você ainda não aprendeu o paradigma baseado em eventos para a programação GUI, EasyGUI irá permitir que você seja produtivo com tarefas muito básicas imediatamente. Mais tarde, se você quiser fazer a transição para um paradigma GUI orientada a eventos, você pode fazê-lo com um pacote GUI mais poderosos tais como anygui, PythonCard, Tkinter, wxPython, etc.

EasyGUI site

WX tem problemas no Mac.

Eu tinha um olhar aqui, como eu quero começar um evento dirigido GUI API para fazer algumas coisas em Python. Tenho wx instalado no meu mac como parte de matplotlib, mas ele não funciona corretamente. Não vai demorar em colocar a partir do teclado. Eu instalei isso três vezes em três diferentes sistemas operacionais Mac, e embora ele trabalhou pela primeira vez, as outras duas vezes eu tive esse problema.

Esta versão estou usando com a distribuição de Enthought, por isso não instalação foi necessária. Quando eu o tenha instalado separadamente, havia tantas instalações dependentes, que era uma tentativa de instalar.

Pelo que eu li aqui, vou dar Tkinter um movimento, como este precisa de ser simples e multi-plataforma, mas eu pensei que eu iria apenas compartilhar o acima com você. I como o Mac OS para um número de razões diferentes, mas as ferramentas de python instalar muito mais fácil no Windows (e provavelmente outros Linux). Eu apenas pensei que eu iria dar uma perspectiva Mac aqui.

Eu como wxPython ou Tk.

Tk vem com a distribuição padrão do Python, assim você não precisa instalar nada mais.

wxPython (wxWigets) parece muito mais poderoso e parece um agradável muito. Ele também funciona bem multi-plataforma (embora não perfeitamente, porque ele usa diferentes API gráfica subjacente de em diff tipos de sistema)

Eu prefiro PyGTK, porque eu sou um cara GNOME. Usando PyGTK se sente muito pythônico para mim. A organização de código sente consistente, a documentação é limpa e completa, e é um kit de ferramentas muito fácil de se acostumar com (exceto para talvez Treeviews).

Um fácil de usar GUI criador para Python não existe. Isso é incrível realmente considerando pequenas linguagens de script como AutoIt e AutoHotkey têm grande e muito simples de usar os fabricantes de GUI. Vamos lá, seguidores Python, você não pode fazer melhor?

Eu tenho trabalhado com wxPython por alguns anos agora e eu gosto bastante. A melhor coisa sobre wxPython é que a interface do usuário se sente nativa nas diferentes plataformas é executado no (excelente no Windows e Linux embora não tão bom no OS / X).

A API falta alguma consistência, mas você rapidamente se acostumar com isso.

Você pode conferir Testuff (plug descarado, como é o meu próprio produto) para obter uma sensação de que pode ser feito com wxPython (embora eu deva dizer, com um pouco de esforço).

wxPython, e eu estou supondo que PyGTK também, pode usar wxGlade para ajudar você a criar a maioria das UIs você vai criar. Isso é uma grande vantagem. Você não tem que aprender a mão-código da GUI até que esteja pronto. Fiz vários programas gráficos em linha reta de wxGlade antes de eu era bastante confortável na forma como wxPython trabalhou para tomar um tiro na mão-de codificação.

PyQt tem um dispositivo de disposição gráfica semelhante, mas eu nunca tive boa sorte para conseguir PyQt para compilar corretamente. Houve também uma falta de tutoriais e documentação que mostrou como criar o código final Python; muitos dos documentos achei que se refere à versão C ++ do Qt.

Tkinter é bom para programas rápida e suja, mas, realisticamente, se você usar wxGlade pode ser mais rápido para fazer o programa com wxPython. No mínimo, você pode usar wxGlade para mostrar uma representação visual do programa para um cliente, em vez de tomar o tempo para mão-código do programa "fictício".

Existem específicos de python gui-api como Kivy (sucessor ou pymt), pygui (baseado em pirex), Pyui e nufox, que não se comparam com os kits de ferramentas mais robustas como wxpython, PyQt, pygtk e tkinter.

Eles são apenas ferramentas extras opcionais.

A única coisa única sobre eles é que estes são api específica-python, assim como existem prima (api-específica perl) e calçados (API específica de rubi). Ela nos ajuda a compreender que quando TK é tcl baseado em porta de api (e outros são C e C ++ com base), então estes api são especificamente feito para os respectivos três linguagens de script.

Destes, Kivy é o mais robusto, enquanto pygui de codificação é mencionado para ser muito python-like, Pyui é menos robusta, mas vale a pena tentar e tudo isso deve ser portátil, onde quer python ou aplicativo baseado em python vai.

Depois, há jpype que é um conjunto de ferramentas utilizável com jython e pydev, e que na verdade é Japi de java personalizadas sob python / jython-interface.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top