在 Microsoft Windows 上开发 Gtk 4 应用程序是我在 Internet 上经常看到的问题。

有可能发展吗?

是的,这是可能的,但是今天开发 Gtk 4 应用程序的最佳方法是使用 IDEGnome Builder以及包装Flatpak:

https://blog.justcode.com.br/python-e-gtk-4-conhecendo-o-ide-gnome-builder

显然 Gnome Builder 的使用不是强制性的。

这就是为什么在今天的文章中,我们将了解如何准备开发环境,以便在 Microsoft Windows 上使用 Python 编程语言 (PyGObject) 和 Gtk 4 图形界面创建应用程序。

要在 Linux 发行版上准备开发环境,请使用这篇文章:

https://blog.justcode.com.br/python-e-gtk-4-preparando-o-ambiente-de-desenvolvimento-no-linux


Msys2

msys2 是 Microsoft Windows 的终端,允许安装多个包,包括 Gtk 4 图形工具包包和我们需要的 Python 3 编程语言。

安装

安装msys2很简单,去官网msys2:

msys2-site-oficial.png

下载安装程序,下载完成后2次点击:

msys2-instalador-pasta-downloads.png

在安装过程中无需更改任何选项,继续前进直到完成:

msys2-instalador.png

安装结束,在我的微软Windows启动中寻找msys2的终端:

msys2-menu-iniciar.png

打开终端,更新默认安装的包:

pacman -Syu

msys2-pacman-syu.png

更新完成后,我们就可以开始安装开发所需的包了。


GTK 4

本节中显示的命令将安装 Gtk 4 库、Python 编程语言和PyGObject 绑定。

依赖

🚨 以下命令必须在 msys2 终端中执行。

pacman -S \
mingw-w64-x86_64-gtk4 \
mingw-w64-x86_64-python3 \
mingw-w64-x86_64-python3-pip \
mingw-w64-x86_64-python3-gobject \
mingw-w64-x86_64-libadwaita \
mingw-w64-x86_64-python-autopep8 \
mingw-w64-x86_64-python-pylint

msys2-installing-packages-and-dependencies.png

包安装完成后,我们应该测试 Python 编程语言与 Gtk 4 工具包的通信。

打开终端并输入:

终端MinGW x64(推荐):

python3 -c "import gi"

msys2-mingw-x64-python-import-gi.webp

终端PowerShell:

C:\msys64\mingw64\bin\python3 -c "import gi"

msys2-powershell-python3-c-import-gi.png

终端做msys2:

C:/msys64/mingw64/bin/python3 -c "import gi"

msys2-python3-c-import-gi.png

如果运行命令没有返回错误,则安装配置正确👍👋👋。

zoz100057 * *

配置Python解释器

如果执行了默认安装,Python 解释器将在路径中:

  • C:\msys64\mingw64\bin\python3.exe

📝 这条路径可能会有所不同。

Visual Studio 代码(VSCode)

创建一个文件并使用名称main.py或您喜欢的任何其他名称保存它。

在Visual Studio Code的右下角点击Select pythoninterpreter选项,可能选择了Python解释器,点击更改即可:

visual-studio-code-interpretador-python.webp

单击此选项将打开一个菜单,您可以在其中选择 Python 解释器。

如果未显示来自 msys2 的解释器,请输入相同的绝对路径 (C:\msys64\mingw64\bin\python3.exe)。

PyCharm

在 PyCharm 中,转到 File 菜单并单击 Settings 选项,在 Settings 中查找 Python Interpreter 并将路径添加到虚拟环境的 Python 解释器:

python-gtk-4-configure-interpreter-no-pycharm.webp

  • 点击这里直接在你的 PyCharm 中打开这个选项。

代码

要在文本编辑器或 IDE 中测试配置,请使用以下示例代码:

# -*- coding: utf-8 -*-
"""Python e GTK 4: PyGObject Gtk.ApplicationWindow()."""

import gi

gi.require_version(namespace='Gtk', version='4.0')
gi.require_version(namespace='Adw', version='1')

from gi.repository import Adw, Gio, Gtk


class ExampleWindow(Gtk.ApplicationWindow):

    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        self.set_title(title='Python e GTK 4: PyGObject Gtk.ApplicationWindow()')
        # Tamanho inicial da janela.
        self.set_default_size(width=int(1366 / 2), height=int(768 / 2))
        # Tamanho minimo da janela.
        self.set_size_request(width=int(1366 / 2), height=int(768 / 2))

        headerbar = Gtk.HeaderBar.new()
        self.set_titlebar(titlebar=headerbar)

        menu_button_model = Gio.Menu()
        menu_button_model.append('Preferências', 'app.preferences')

        menu_button = Gtk.MenuButton.new()
        menu_button.set_icon_name(icon_name='open-menu-symbolic')
        menu_button.set_menu_model(menu_model=menu_button_model)
        headerbar.pack_end(child=menu_button)

        # O seu código aqui:
        # ...


class ExampleApplication(Adw.Application):

    def __init__(self):
        super().__init__(application_id='br.com.justcode.Example',
                         flags=Gio.ApplicationFlags.FLAGS_NONE)

        self.create_action('quit', self.exit_app, ['<primary>q'])
        self.create_action('preferences', self.on_preferences_action)

    def do_activate(self):
        win = self.props.active_window
        if not win:
            win = ExampleWindow(application=self)
        win.present()

    def do_startup(self):
        Gtk.Application.do_startup(self)

    def do_shutdown(self):
        Gtk.Application.do_shutdown(self)

    def on_preferences_action(self, action, param):
        print('Ação app.preferences foi ativa.')

    def exit_app(self, action, param):
        self.quit()

    def create_action(self, name, callback, shortcuts=None):
        action = Gio.SimpleAction.new(name, None)
        action.connect('activate', callback)
        self.add_action(action)
        if shortcuts:
            self.set_accels_for_action(f'app.{name}', shortcuts)


if __name__ == '__main__':
    import sys

    app = ExampleApplication()
    app.run(sys.argv)

作为示例代码的结果,我们有:

python-gtk-4-aplicativo.webp


💡 额外

已知错误

如果在执行代码时显示错误:

Traceback (most recent call last):
  File "c:\msys64\home\Brunno Lorran\deletar\main.py", line 6, in <module>
    gi.require_version('Gtk', '4.0')
  File "C:\msys64\mingw64\lib\python3.10\site-packages\gi\__init__.py", line 129, in require_version
    raise ValueError('Namespace %s not available for version %s' %
ValueError: Namespace Gtk not available for version 4.0

对于此错误,请将 Git Bash 终端设置为 Visual Studio Code 中的默认终端:

vscode-terminal-git-bash.webp

📝 在 Microsoft Windows 上安装Git后,Git Bash 终端可用。

解决此错误的另一种方法是使用 msys2 安装附带的MSYS2 MinGW x64终端运行代码。


更多关于使用编程语言和 Gtk 4 图形工具包构建应用程序的代码示例可在我的 Github ⬇ ⭐ 上找到。


Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐