gpt4 book ai didi

Python GTK 菜单项需要点击两次才能激活

转载 作者:太空宇宙 更新时间:2023-11-04 11:02:22 25 4
gpt4 key购买 nike

好吧,首先我不太确定如何表述我的问题。这可能是 sleep 不足,或者是 Python 和 GTK 的新手,或者两者兼而有之。为了帮助我,我在 zetcode.com 的教程的帮助下编写了一个完整的基本示例。

这个问题,正如我所说的那样,是一个菜单项 - 没有子菜单 - 需要点击两次才能激活。与单击激活的子菜单项不同。这有点烦人(并且可能会让 future 的用户感到困惑),但并没有真正导致我的应用程序出现任何问题。但是,我想解决它。

我的实际应用程序是在 Ubuntu Quickly 的帮助下创建的- 但问题存在于使用 gtkBuilder 或 straight-gtk 时。

这是一个简单的例子:

#!/usr/bin/python

import gtk


class MenuTest(gtk.Window):

def __init__(self):
super(MenuTest, self).__init__()

self.set_title("Menus, how do they work?!")
self.set_size_request(350, 200)
self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(6400, 6400, 6440))
self.set_position(gtk.WIN_POS_CENTER)

mb = gtk.MenuBar()

filemenu = gtk.Menu()
filem = gtk.MenuItem("Some Action")
filem.connect("activate", self.on_file_activate)

mb.append(filem)

vbox = gtk.VBox(False, 2)
vbox.pack_start(mb, False, False, 0)

self.add(vbox)

self.connect("destroy", gtk.main_quit)
self.show_all()

def on_file_activate(self, widget):
md = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, gtk.BUTTONS_CLOSE, "herp derp, took two clicks to show me")
md.run()
md.destroy()


MenuTest()
gtk.main()

希望有人能提供帮助,同时不要完全混淆这个菜鸟。

最佳答案

您可以通过连接到 'button-press-event' 信号而不是 'activate' 信号来解决您的问题,并像这样进行回调:

def on_file_activate(self, widget, event):
if event.button != 1:
return False #only intercept left mouse button
md = gtk.MessageDialog(self, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_INFO, gtk.BUTTONS_CLOSE, "herp derp, I only needed one click")
md.run()
md.destroy()
return True

但是,您为什么要这样做?我对您的原始代码没有按预期工作并不感到惊讶,因为这并不是菜单的真正用途。您最好使用工具栏按钮或常规按钮。我认为将菜单误用作按钮更有可能让 future 的用户感到困惑。

关于Python GTK 菜单项需要点击两次才能激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4169811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com