【问题标题】:Julia Gtk Windows do not display outside REPLJulia Gtk Windows 不在 REPL 之外显示
【发布时间】:2015-11-05 16:10:11
【问题描述】:

我正在尝试将 Julia 与 REPL 之外的 Gtk 包一起使用。

使用此代码:

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

代码运行但没有出现窗口。

如果有任何帮助,我正在使用带有 4.1 Linux 内核的 Manjaro Linux 并安装了 GTK2 和 GTK3 库。

【问题讨论】:

  • 您可能需要在窗口上调用showall()(我认为相当于gtk_widge_show_all())才能显示它。这就是普通 GTK+ 所发生的情况。
  • 我试过使用这个功能,但在 REPL 之外仍然无法使用。

标签: linux gtk julia read-eval-print-loop


【解决方案1】:

您的代码,实际上就是文档所说的,对我也不起作用(Julia 0.4.0,Gtk.jl 0.9.2)。也许文档已经过时了。

有效的是使用Gtk.gtk_mainGtk.gtk_quit

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

我不知道这是否是“正确”的方式,但它确实有效,并且更接近 GTK+ 的 C API 中的工作方式(使用gtk_maingtk_main_quit)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多