GtkIconView右键激活
我正在用Python构建一个使用GTK 3+的应用程序,并且我在GtkIconView
上遇到了问题。当视图中有图标时,我希望能够左右点击图标。单击左键单击即可正常工作,但在右键单击时遇到问题。GtkIconView右键激活
右键点击应该显示一个弹出菜单。我看看https://askubuntu.com/questions/144311/how-to-make-a-gtk-iconview-react-to-single-click-instead-of-double-click
有人建议我与button_press_event
一起工作,然后从那里继续。 这里是我的代码关于上述建议:
def on_button_press_event(self, widget, event):
if event.type == Gdk.EventType.BUTTON_PRESS:
choice = util.get_selection(.....)
#get the text of the selected icon
if event.button == 3:
print("Right CLick")
print(choice)
elif event.button == 1:
print("LEFT CLICK")
print(choice)
在这个阶段,当我点击该图标,左,右单击不选择图标从而选择变得[]
。只有双击才能选择图标。
有没有一种方法可以通过单击来选择图标而不管该按钮?
我已经加了GtkIconView.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
但这似乎没有做任何事情。
我设法通过使用button_press_event
来解决问题。
if event.type == Gdk.EventType.BUTTON_PRESS:
path = GtkIconView.get_path_at_pos(event.x, event.y)
if path != None:
GtkIconView.select_path(path)
choice = util.get_selection(GtkIconView,GtkListStore)
if event.button == 3:
# popup on right click
elif event.button == 1:
self.on_GtkIconView_activated(widget,choice)
要接收来自鼠标的任何信号,点击你要添加
GtkIconView.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
所以在图标的鼠标点击,将导致图标的文字显示,这正是我需要的。
首先,设置activate-on-single-click
属性不够用?我不认为这在你所关联的问题的任何地方都有提及。
无论如何,你需要从GDK事件(如button-press-event
)返回的Python相当于GDK_EVENT_PROPAGATE
(无论是),否则其他的事件处理程序(就像是GtkIconView本身的一部分的那些)将无法运行。我假设你遇到了未定义的行为,因为你没有明确地返回任何东西,在这种情况下,未定义的行为是“返回等效于GDK_EVENT_STOP
”。
“单击激活”仅适用于左键单击。 – shellcomplex 2014-10-04 15:19:18