该部分是简单介绍一些「图形工具库」的内容。
认识
因为 GTK 3 的主题不紧凑,按钮、标题栏太宽,太占空间,所以尝试着写个 GTK 3 的主题。我们常说的“GTK”是一个跨平台的「图形工具库」。所以,这里先简单的了解一下「图形工具库」,对「图形工具库」有个基本的概念。
我们需要对 Zim Desktop Wiki 进行二次开发(增加我们喜欢的功能),但是该应用通过 GTK 开发,所以受制于 GTK 自身的特性;
该笔记将记录:我们尝试了解(调研)常见的 Linux 桌面环境的 GUI 框架,以及相关问题的解决办法;
组成
WIP
构建
常用的跨平台 GUI(图形用户界面)框架包括以下几种:
3)GTK:GTK 是一个为 GIMP 创造的开源跨平台工具包。它主要用于创建图形界面,但它也包含一些非 GUI 功能;
4)JavaFX:JavaFX 是一个 Java 的图形用户界面库,用于创建丰富的互联网应用程序。它支持多种操作系统,包括 Windows、Mac OS、Linux 等;
Qt
Qt 是一个跨平台的应用程序开发框架,可以在 Windows、Mac OS、Linux 和一些嵌入式操作系统上运行。它可以用 C++ 或 QML(一种 JSON 类型的声明性语言)编写;
GNUStep
GNUstep 是一个成熟的框架,适用于高级 GUI 桌面应用程序以及服务器应用程序;
该框架严格遵循苹果的 Cocoa(原 NeXT 的 OpenStep)API,但可移植到各种平台和体系结构;
Electron
Electron 是 GitHub 开发的一个开源库,用于使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序。它在 Node.js 上运行,并使用 Chromium 渲染引擎;
Coding Language | HTML, CSS and JavaScript
pywebview
Build GUI for your Python program with JavaScript, HTML, and CSS
官网:https://pywebview.flowrl.com/
文档:https://pywebview.flowrl.com/examples/
仓库:https://github.com/r0x0r/pywebview/
Webview | Java
https://github.com/webview/webview_java
chromiumembedded/cef
https://github.com/chromiumembedded/cef
nw
https://github.com/nwjs/nw.js/
FLTK | Fast Light Toolkit
FLTK is a cross-platform C++ GUI toolkit for UNIX®/Linux® (X11 and Wayland), Microsoft® Windows®, and macOS®. FLTK provides modern GUI functionality without the bloat and supports 3D graphics via OpenGL® and its built-in GLUT emulation.
TigerVNC / vncviewer – the cross-platform TigerVNC Viewer, written using FLTK.
Python GUI Frameworks
以下是一些常用的 Python GUI 开发框架,这些框架都有各自的特点和适用场景,选择合适的框架取决于你的项目需求和个人喜好;
Tkinter:是 Python 标准库中自带的 GUI 开发库,简单易用,可用于创建基本的窗口、按钮、文本框等组件;
PyQt:是基于 Qt 库的 Python 绑定,提供了丰富的 GUI 组件和功能,支持跨平台开发;
PySide:也是 Qt 库的 Python 绑定,与 PyQt 类似,提供了类似的功能和组件;
wxPython:基于 wxWidgets 库的 Python 绑定,可以创建跨平台的 GUI 应用程序,提供了丰富的组件和功能;
PyGTK:是 GTK+图形库的 Python 绑定,可用于创建 Linux 和 UNIX 系统上的 GUI 应用程序;
应用
场景 | 跨平台应用
Flutter
Flet
Kivy
- https://github.com/kivy/kivy
- 是一个开源的 Python GUI 开发框架,适用于创建移动应用程序和多点触摸界面,具有良好的跨平台性能;
参考
ChatGPT 4 / 介绍常用的 GUI 框架,支持 Linux Windows macOS 三个平台
Wikipedia/Widget toolkit
Wikipedia/List of widget toolkits
Setting gtk2 and gtk3 theme via config file