Qual é a diferença entre GTK e QT?

29

Por favor, tenha paciência comigo, pois sou um iniciante no Linux. Estou escrevendo programas GUI no REALbasic em um Mac há vários anos. Estou tentando aprender Python e quero escrever aplicativos GUI para Linux (principalmente Ubuntu e Mint, pois são as distros às quais tenho acesso e parecem as mais populares). Basicamente, tenho três perguntas:

  1. Existem diferenças significativas entre GTK e QT
  2. Eu brinquei com quicklye Gladeno Ubuntu, mas entendo que eles são baseados no GTK 2 e isso agora está obsoleto. Isso está correto?
  3. Existem editores all-in-one que me permitem criar uma GUI e depois adicionar código Python a ela? (por exemplo, adicione um botão a uma janela no editor, clique duas vezes no botão e adicione o código Python que será executado quando o botão for pressionado)

Desculpe se estas são perguntas realmente idiotas, mas quero começar a aprender as ferramentas 'certas' desde o início.

Nootrino
fonte
2
Não tenho tempo agora para responder às suas perguntas, mas posso esclarecer uma coisa. O Glade costumava ser uma biblioteca, um formato para um arquivo de definição de interface do usuário e um aplicativo para criar esses arquivos .glade. Agora usamos o GtkBuilder para o que o formato Glade costumava fazer, e isso é incorporado ao GTK. O Glade continua sendo uma ótima ferramenta para criar arquivos .ui para o GtkBuilder (ou simplesmente para testar layouts diferentes), e o Glade 3.x certamente faz o Gtk3 - embora nem tudo esteja disponível no momento.
Dylan McCall
Isso é muito útil. Então, se eu decidir usar o GTK como meu kit de ferramentas, usaria o Glade para criar o layout e outra ferramenta para vincular meu código Pyhton e o design da interface do usuário - correto?
Nootrino
Sim, e essa ferramenta faz parte do GTK, portanto está documentada aqui: developer.gnome.org/gtk3/3.1/GtkBuilder.html Estou vinculando você à documentação C porque é bastante detalhada e quando você está usando o PyGObject a única diferença real será a sintaxe. Em Python, os nomes e outras coisas terão algo parecido com isto: valadoc.org/gtk+-3.0/Gtk.Builder.html
Dylan McCall

Respostas:

12

Vou tentar responder às suas perguntas, sem ir em direções malucas.

  1. Eles são significativamente diferentes, mesmo sendo as duas bibliotecas de widgets. O GTK + regular é baseado em C e QT em C ++. Embora existam ligações para quase todas as linguagens de programação.

  2. Você está bastante correto sobre o GTK2, embora existam muitos aplicativos GTK2. Espero que o GTK2 esteja em uso por um tempo, assim como o GTK1. Quando o empurrão é empurrado, o GTK2 está obsoleto e, se você está começando do zero, vá para o GTK3.

  3. Lembre-se de GTK e QT, são apenas kits de ferramentas de widget. Por exemplo ... aplicativos Gnome, use GTK e também os Gnome-Libs. Se você quiser, dê uma olhada no vala. É considerado simples, o vala compila fonte a fonte diretamente para C e possui ligações completas para muitas linguagens de programação. Você também pode querer olhar para o Anjuta, apenas certifique-se de ter as novas versões do gtk3. Aparentemente, o PyGTK estreito suporta apenas o GTK2, a última vez que verifiquei. Se você está procurando evitar todas as libs do Linux DE, sugiro consultar o QT. O QT simples é diferente dos aplicativos do KDE, que incluem bibliotecas do KDE. O QT é considerado muito multiplataforma, o que é legal se você deseja compilar para non * nix. Se você deseja iniciar o QT + Python, consulte PySide (LGPL) ou PyQT (GPL). O QT tem alguns bons construtores de GUI, como o qt creator e o qt-designer.

JM Becker
fonte
Obrigado por isso. Anjuta parece muito com o que eu tenho procurado. Vou brincar um pouco. Se não estiver certo, examinarei o QT. Parece-me que o GTK e o QT alcançam o mesmo resultado final - acho que é apenas uma questão de preferência.
Nootrino
O Qt é muito mais do que apenas um kit de ferramentas de widgets. É uma estrutura inteira, replicando grandes pedaços do STL e do Boost.
Scottl
@ scottl, eu não estava tentando limitar o QT. Embora o QT seja mais capaz do que apenas os widgets, é nesse contexto que se tornou parte da solução em potencial.
JM Becker
@ Nootrino: você deve se lembrar no mundo do FLOSS, geralmente há mais de uma solução estabelecida. A razão pela qual muitas pessoas escolheram, uma ou outra, é baseada em sua posição C vs, C ++. Obviamente, a licença teve um papel maior no passado. Independentemente de outras estruturas em muitos idiomas, você geralmente concorda mais com um método.
JM Becker
@Nootrino: Estou feliz por ter conseguido realmente ajudar!
JM Becker
5

GTK e Qt são kits de ferramentas de interface de usuário de plataforma aberta e estruturas de desenvolvimento. Essas são as duas estruturas mais populares em uso no Linux, porque são de código aberto e oferecem aos desenvolvedores um poderoso kit de ferramentas para projetar interfaces gráficas de usuário. O GTK é usado como o kit de ferramentas padrão para os ambientes GNOME, LXDE e Xfce Desktop, enquanto o Qt é usado para o KDE.

Se você codifica em C, então obviamente opte pelo GTK +

Se você codificar em C ++, vá para Qt, caso contrário você precisará de Gtkmm (um wrapper C ++ sobre GTK +)

Se você codifica em Python, o GTK + e o Qt têm ligações para o idioma: consulte PyGtk, PyQt e PySide (aquele lançado pela própria Nokia).

One Zero
fonte
Se você estiver usando Python, o PyGTK está obsoleto. Para novos projetos, será muito melhor usar o PyGObject (python-gobject no repositório do Ubuntu): live.gnome.org/PyGObject O PyGObject permite conectar-se a qualquer biblioteca criada no GLib (como o GTK) através do Python, sem camadas adicionais. Você obtém algo muito parecido com o PyGTK, mas é diferente. E, é claro, o PyGObject é a única maneira de conversar com o GTK3 através do Python.
Dylan McCall
-2

O Qt é usado principalmente no KDE e o GTK + no GNOME. Portanto, se você deseja desenvolver para o GNOME, considere o GTK +, pois as dependências necessárias para as bibliotecas do GTK + já devem estar instaladas em um sistema GNOME; o usuário final não precisará instalá-los. O desenvolvimento do GTK + também é beneficiado por uma ferramenta chamada Glade Interface Designer ; se desejar, você pode usá-lo para criar suas interfaces com o usuário.

kosaidpo
fonte
5
O QT é um kit de ferramentas multiplataforma que não é usado apenas no KDE, e o GTK também. E por favor, abster-se de escrita "txt lik dis" ...
Uri Herrera