空白窗口,带有Gtk(0.17)(Julia 1.1)的文档示例

时间:2019-07-12 18:05:11

标签: gtk julia

我遇到了Gtk问题。 我的代码正在编译,没有错误,但是仅显示带有标题的窗口。

所以我想知道我做错了什么,并尝试了一些文档示例(请参见下文)。 而且它也不起作用。

我更新了软件包rm,然后再次添加,没有错误。 编译没有错误,没什么。

当我询问小部件是否可见时,它表示是。

我看到这可能是gtk的配置问题,但没有更多解释。

谢谢您的帮助!


using Gtk

ls = GtkListStore(String, Int, Bool, Bool)
push!(ls,("Peter",20,false,true))
push!(ls,("Paul",30,false,true))
push!(ls,("Mary",25,true,true))
insert!(ls, 2, ("Susanne",35,true,true))

rTxt = GtkCellRendererText()
rTog = GtkCellRendererToggle()

c1 = GtkTreeViewColumn("Name", rTxt, Dict([("text",0)]), sort_column_id=0)
c2 = GtkTreeViewColumn("Age", rTxt, Dict([("text",1)]), sort_column_id=1)
c3 = GtkTreeViewColumn("Female", rTog, Dict([("active",2)]), sort_column_id=2)

tmFiltered = GtkTreeModelFilter(ls)
GAccessor.visible_column(tmFiltered,3)
tv = GtkTreeView(GtkTreeModel(tmFiltered))
push!(tv, c1, c2, c3)

selection = GAccessor.selection(tv)

signal_connect(selection, "changed") do widget
  if hasselection(selection)
    currentIt = selected(selection)

    println("Name: ", GtkTreeModel(tmFiltered)[currentIt,1],
            " Age: ", GtkTreeModel(tmFiltered)[currentIt,1])
  end
end

ent = GtkEntry()

signal_connect(ent, "changed") do widget
  searchText = get_gtk_property(ent, :text, String)

  for l=1:length(ls)
    showMe = true

    if length(searchText) > 0
      showMe = showMe && occursin(lowercase(searchText), lowercase(ls[l,1]))
    end

    ls[l,4] = showMe
  end
end

vbox = GtkBox(:v)
push!(vbox,ent,tv)

win = GtkWindow(vbox, "List View with Filter")
showall(win)

1 个答案:

答案 0 :(得分:0)

我尝试过,但是作为文件运行,您的应用关闭太快了,根本看不到它的显示。这在Gonk.jl文档的“非REPL使用”下进行了介绍,即在julia REPL命令行之外以文件形式运行。只需将showall(win)替换为:

condition = Condition()
endit(w) = notify(condition)
signal_connect(endit, win, :destroy)
showall(win)
wait(condition)

然后,该应用会将控制权传递给内部Gtk运行时事件循环,并等待该应用关闭。我能够运行您的应用程序,并看到与此相关的复选框很好。如果不能,则可能是本地文件有问题。