[Tutorials] 【Python Gtk3开发】Gtk介绍
Tofloor
poster avatar
MrXiang
deepin
2022-04-23 23:54
Author

Gtk介绍

Gtk是什么?

Gtk是一个跨平台图形工具包,可以在Windows和Mac OS X运行开发。但使用Linux开发更好,是主流的开发工具之一。

Gtk与Qt的优劣处

GtkQt一样,有自己的开发设计器 GladeQt稍简单一些,做得东西挺完善的,使用 C++编写,Gtk的话,还是稍微有些难。就比如 Qt的布局,有垂直布局、水平布局、网格布局、表格布局,学起来简单,但 Gtk呢,包括 Qt的布局,垂直水平布局用 GtkBox。网格布局用 GtkGrid。但 GtkGrid 布局难,比如占格,我是研究了好久才了解。还有列表布局,不同于 Qt,只需用字串符就可以制成列表。而 Gtk呢?需要将组件一个个加入,但也更好用了。Gtk学起来难,但功能实现得特别好,Qt容易,但更多功能却要用 C++实现。

界面对比

Gtk界面单一,只适用于Linux的外观,不过吧,可以通过第三方主题进行修改(其实我研究了好久也不知道如何导入主题,有懂的可以告诉我)。Qt可以通过QSS进行修改外观,更好用。

运行速度

另外 Gtk需要许多库的支持,就导致了 Gtk运行稍微速度慢,打包大小大。Qt打包出来的没多大,运行速度也快。

我为什么选择学习Gtk?

1.Gtk好用,绑定好多种语言,有C语言,Python,Rust,JS,Perl,Vala。不过吧,Qt也绑定过好多。Gtk有个叫做GtkHeaderBar的东西,也就是标题栏,可以用GtkWindow的set_titlebar()来实现标题栏,特别好用。Qt却要用更多代码进行实现自定义标题栏,对于初学者有些不友好(不过排除不想设置标题栏的)。

2.Api文档多,几乎所有支持的语言有文档。

总的原因是很好用。

图片

我放几个图片,大家自行体会

QtDesigner:截图_designer_20220423154112.png

Glade:

截图_glade_20220423154134.png

示例对比



from PyQt6 import QtWidgets
import sys

App = QtWidgets.QApplication(sys.argv)
Window = QtWidgets.QMainWindow()
Window.setWindowTitle("Qt")
Window.setFixedSize(500, 500)
Window.show()
sys.exit(App.exec())
from gi import require_version
require_version("Gtk","3.0")
from gi.repository import Gtk

Window = Gtk.Window(title="Gtk3")
Window.set_default_size(500,500)
Window.show_all()
Window.connect("destroy", Gtk.main_quit)
Gtk.main()

Qt.png

截图___init__.py_20220423155424.png

Reply Favorite View the author
All Replies
MrXiang
deepin
2022-04-23 23:55
#1

下期我会发Gtk的安装教程

Reply View the author
enforcee
deepin
2022-04-24 01:24
#2

先占个座

blush

话说主题是用css,应该是用css provider读取然后用style context加载到显示

https://docs.gtk.org/gtk4/class.StyleContext.html

gtk3也是一样的

Reply View the author
wangcy1995
deepin
2022-06-29 18:47
#3

请教一下楼主,gtk程序的库是怎么一起打包的呢😬

Reply View the author
58******42@qq.com
deepin
2022-09-21 20:34
#4

为什么我的界面边框是蓝色的。。。好丑
image.png

Reply View the author