Я пытаюсь выяснить, есть ли способ использовать GTK (для разработки графического интерфейса) в языке программирования Mojo.
До сих пор мне не удалось найти никакой документации, учебных пособий или примеров, показывающих, как GTK можно интегрировать с Mojo.
Поддерживает ли GTK вообще в Mojo?
Если да, то как его правильно настроить или связать?
Если нет, то существуют ли в настоящее время альтернативные среды графического интерфейса для Mojo?
Любые рекомендации, ссылки или примеры были бы очень полезны.
Я взял код exmaplze с сайта GTK и передал его в ChatGPT для преобразования в код Mojo.
from python import Python
struct ExampleAppMojo:
def run(self):
py = Python.import_module("gi")
py.require_version("Gtk", "4.0")
py.require_version("Adw", "1")
Gtk = py.repository["Gtk"]
Adw = py.repository["Adw"]
Gio = py.repository["Gio"]
Adw.init()
py_code = """
class ExampleWindow(Gtk.ApplicationWindow):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.set_title('Python - PyGObject - GTK')
self.set_default_size(683, 384)
headerbar = Gtk.HeaderBar.new()
self.set_titlebar(headerbar)
menu_button_model = Gio.Menu()
menu_button_model.append('Preferences', 'app.preferences')
menu_button = Gtk.MenuButton.new()
menu_button.set_icon_name('open-menu-symbolic')
menu_button.set_menu_model(menu_button_model)
headerbar.pack_end(menu_button)
class ExampleApplication(Adw.Application):
def __init__(self):
super().__init__(application_id='br.com.justcode.Example')
self.create_action('quit', self.exit_app, ['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('Action app.preferences was activated.')
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)
"""
py_app_module = Python.exec(py_code)
app_class = py_app_module["ExampleApplication"]
app_instance = app_class()
app_instance.run(["--"])
Подробнее здесь: https://stackoverflow.com/questions/798 ... tk-in-mojo