Gtk.MenuItem on“上”;激活";信号不';行不通

Gtk.MenuItem on“上”;激活";信号不';行不通,gtk,signals,pygtk,menuitem,Gtk,Signals,Pygtk,Menuitem,我不知道为什么我不能激活菜单项。我尝试连接我的函数处理程序许多信号:“激活”、“激活项目”、“通知::激活”、“选中”。但是没有人工作过 我使用Glade,我给你附上我的菜单栏的一张照片(我讨厌在unity窗口管理器上,菜单栏显示在窗口栏中:它应该在应用程序窗口中) 我用于信号处理程序的代码非常简单: builder.get_object('menuitem3').connect('activate', self.useless_method) builder.get_object('wind

我不知道为什么我不能激活菜单项。我尝试连接我的函数处理程序许多信号:“激活”、“激活项目”、“通知::激活”、“选中”。但是没有人工作过

我使用Glade,我给你附上我的菜单栏的一张照片(我讨厌在unity窗口管理器上,菜单栏显示在窗口栏中:它应该在应用程序窗口中)

我用于信号处理程序的代码非常简单:

builder.get_object('menuitem3').connect('activate', self.useless_method)
builder.get_object('window1').show()
下面是Glade文件中的XML代码:

  <object class="GtkMenuBar" id="menubar1">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <child>
      <object class="GtkMenuItem" id="menuitem1">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">_File</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="menuitem2">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">_Modifica</property>
        <property name="use_underline">True</property>
      </object>
    </child>
    <child>
      <object class="GtkMenuItem" id="menuitem3">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="label" translatable="yes">_Visualizza</property>
        <property name="use_underline">True</property>
      </object>
    </child>
  </object>

符合事实的
错误的
符合事实的
错误的
_文件
符合事实的
符合事实的
错误的
_修改
符合事实的
符合事实的
错误的
_可视化
符合事实的

为什么这不起作用

您的glade文件没有问题。我硬编码了它,它成功了。不过需要注意的是,既然“menuitem3”是顶级菜单,为什么要连接信号?还有你的关联函数

编辑(您的代码):


def无用的_方法(menuitem):你能给我们看一些创建对象Gtk.Menu的代码吗?刚刚添加的,我希望你能发现一些错误。请尝试使用glade版本:glade文件很好。编辑源代码。继续努力。好东西好的,谢谢!我忘了切断“self”参数,但我需要在我的软件中使用它(它是一个实例类方法)。对于“menuitem”,如果您尝试打印它,它将打印右menuitem对象的名称(通过Gtk.Buildable.get_name())。现在我知道“激活”信号只适用于menuitem儿童。因此,我认为我必须用按钮或其他东西来替换单菜单项。
 def useless_method(menuitem): <<< edited, note below

     print 'I am %s' % str(menuitem) <<< note below


 builder = Gtk.Builder()
 builder.add_from_file('menuitem.glade')

 builder.get_object('menuitem3').connect('activate', useless_method)
 builder.get_object('window1').show_all()

 Gtk.main()