我想在用户右键单击Gtk.TreeView
的标题行时弹出一个上下文菜单。在GTK3中,Gtk.TreeViewColumn
有一个get_button()方法,这使得这项工作变得简单;只需将菜单附加到按钮上,并将其连接到“clicked”事件。然而,在GTK2中,这是行不通的。您只能调用get_widget()
方法,如果您没有通过set_widget()
设置小部件,则该方法返回None。我尝试过将列名为Gtk.Label
放入Gtk.EventBox
中,并将其设置为在将EventBox
连接到“按钮按下事件”的回调之后的小部件,单击它不会生成事件。在
我试图做类似于列出的here的操作,但是在列小部件上执行get_parent()
操作将返回None,并且永远不会像代码所示那样到达按钮。在
人们找到了什么解决办法?在
这看起来确实很复杂,我看了一下source。显然,}之前,可能是在Treeview的show命令之后,您应该能够检索父对象(button->;HBox->;对齐->标签),并可以将处理程序附加到信号。在
parent
技巧起作用了(并返回对齐对象),但是只有在实现TreeviewColumn之后才将自定义标签添加到按钮中,因此在parent
属性保留{我喜欢在S.O上工作的例子,所以我决定发布一个。所有学分都是给@Johan Dahlin的!在
黑客快乐!在
这其实很简单,但你需要一些黑客。在
首先,您需要强制Gtk为GtkTreeViewColumn创建一个标题按钮:
之后,您需要获取头的内部GtkButton:
^{pr2}$最后,通过按钮引用,您可以做一些有用的事情:
这是从kiwi库中获取的,该库有一个ObjectList,它提供了一个类似python列表的api来创建GtkTreeViews。在
相关问题 更多 >
编程相关推荐