Julia Gtk Windows не отображаются за пределами REPL

Я пытаюсь использовать Джулию с пакетом Gtk вне REPL.

Используя этот код:

Using Gtk.ShortNames
win = @Window("My Window")

в REPL работает, но тот же код положить в файл test.jl и использовать:

julia test.jl

в командной строке не работает.

Я попробовал метод, написанный здесь: https://github.com/JuliaLang/Gtk.jl

Using Gtk.ShortNames

win = @Window("gtkwait")

# Put your GUI code here

if !isinteractive()
    c = Condition()
    signal_connect(win, :destroy) do widget
        notify(c)
    end
    wait(c)
end

Код работает, но окно не появляется.

Если это поможет, я работаю в Manjaro Linux с 4.1 Linux Kernel и у меня установлены библиотеки GTK2 и GTK3.

1 ответ

Решение

Ваш код, который буквально соответствует указаниям документации, также не работает для меня (Julia 0.4.0, Gtk.jl 0.9.2). Возможно, документация устарела.

Что работает, это использовать Gtk.gtk_main а также Gtk.gtk_quit:

using Gtk.ShortNames
win = @Window("Hello")
signal_connect(win, :destroy) do widget
    Gtk.gtk_quit()
end
Gtk.gtk_main()

Я не знаю, является ли это "правильным" способом, но он работает и ближе к тому, как все работает в C API GTK + (с gtk_main а также gtk_main_quit).

Другие вопросы по тегам