GTK和QT有什么区别?


29

由于我是Linux的新手,请多多包涵。多年来,我一直在Mac上用REALbasic编写GUI程序。我正在尝试学习Python,并且想为Linux编写GUI应用程序(主要是Ubuntu和Mint,因为它们是我可以访问的发行版,并且它们似乎最受欢迎。)我基本上有三个问题:

  1. GTK和QT之间有什么重大区别吗
  2. 我玩弄quicklyGladeUbuntu的,但据我所知,他们是基于GTK + 2,这是现在已经过时。那是对的吗?
  3. 是否有让我设计GUI并向其中添加Python代码的多合一编辑器?(例如,将一个按钮添加到编辑器中的窗口,双击该按钮,然后添加按下按钮时要执行的Python代码)

很抱歉,如果这些问题确实很愚蠢,但我想从一开始就开始学习“正确的”工具。


2
我现在没有时间回答您的问题,但是我可以澄清一下。Glade过去既是一个库,既是UI定义文件的格式,又是创建那些.glade文件的应用程序。现在我们使用GtkBuilder来完成Glade格式的工作,并且将其内置到GTK中。Glade应用程序是一个很好的工具,可以为GtkBuilder生成.ui文件(或者只是测试不同的布局),而Glade 3.x的确可以使用Gtk3,尽管目前尚无所有功能。
Dylan McCall

那很有帮助。因此,如果我决定使用GTK作为工具箱,那么我将使用Glade设计布局,并使用另一个工具链接我的Pyhton代码和UI设计-对吗?
Nootrino

是的,该工具是GTK的一部分,因此在此处进行了记录:developer.gnome.org/gtk3/3.1/GtkBuilder.html我将您链接到C文档,因为它非常详细,并且在您使用PyGObject时唯一真正的区别是语法。在Python中,名称和内容如下所示:valadoc.org/gtk+-3.0/Gtk.Builder.html
Dylan McCall

Answers:


12

我将尽力回答您的问题,而不会向疯狂的方向发展。

  1. 即使它们都是小部件库,它们也有很大不同。常规GTK +基于C,而QT基于C ++。尽管几乎每种编程语言都存在绑定。

  2. 尽管有很多GTK2应用程序,但是您对GTK2的判断是正确的。我希望GTK2和GTK1一样会使用一段时间。当一推再推时,GTK2已过时,如果您是全新的,请去GTK3。

  3. Remeber GTK和QT只是小部件工具包。例如... Gnome应用程序,请使用GTK以及Gnome-Libs。如果需要的话,请看一下vala。它被认为很简单,vala将源代码直接编译为C,并且具有许多编程语言的完整绑定。您可能还想看看Anjuta,只需确保拥有新的gtk3版本即可。显然,海峡PyGTK仅支持GTK2,这是我最近检查过的。如果您希望避免使用所有Linux DE库,建议您使用QT。Plain QT与包括KDE库的KDE应用程序不同。QT被认为是非常跨平台的,如果您要为非* nix进行编译,这是很酷的。如果要开始使用QT + Python,请查看PySide(LGPL)或PyQT(GPL)。QT有一些不错的GUI构建器,例如qt creator和qt-designer。


谢谢你 Anjuta看起来很像我追求的样子。我要玩一下。如果不正确,那么我将看一下QT。让我惊讶的是,GTK和QT都达到了相同的最终结果-我猜这只是一个偏好问题。
Nootrino

Qt不仅仅是一个小部件工具包。它是一个完整的框架,复制了STL和Boost的很大一部分。
斯科特,2011年

@scottl,我不是想限制QT。尽管QT不仅具有小部件的功能,但它已成为潜在解决方案的一部分。
JM Becker

@Nootrino:您必须记住,在FLOSS世界中,通常存在不止一种解决方案。许多人选择一个或另一个的原因是基于他们的C与C ++地位。当然,许可证在过去起着更大的作用。不管存在多种语言的其他框架,您通常都同意一种方法。
JM Becker

@Nootrino:很高兴我能够真正提供帮助!
JM Becker

5

GTK和Qt是开源的跨平台用户界面工具箱和开发框架。这是Linux使用的两个最受欢迎的框架,因为它们是开源的,并为开发人员提供了设计图形用户界面的强大工具包。GTK用作GNOME,LXDE和Xfce桌面环境的标准工具包,而Qt用作KDE。

如果您使用C编写代码,那么显然可以使用GTK +

如果您使用C ++编写代码,请使用Qt,否则您将使用Gtkmm(GTK +上的C ++包装器)

如果您使用Python进行编码,则GTK +和Qt都具有该语言的绑定:请参见PyGtk,PyQt和PySide(由诺基亚自己发布的代码)。


如果您使用的是Python,则不建议使用PyGTK。对于新项目,使用PyGObject(Ubuntu存储库中的python-gobject)会更好:live.gnome.org/PyGObject PyGObject允许您通过Python连接到基于GLib构建的任何库(例如GTK),而无需任何额外的层。您会得到非常像PyGTK的东西,但是处理方式却大不相同。而且,当然,PyGObject是通过Python与GTK3对话的唯一方法。
Dylan McCall

-2

Qt主要用于KDE,GNOME中用于GTK +。因此,如果您要为GNOME开发,请考虑使用GTK +,因为GTK +库的必需依赖项应该已经安装在GNOME系统上。最终用户将不需要安装它们。GTK +开发还受益于名为Glade Interface Designer的工具;如果愿意,可以使用它来创建用户界面。


5
QT是一个跨平台工具包,不仅在KDE中使用,GTK也是如此。并且请不要写“ txt lik dis” ...
Uri Herrera
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.