Python rb插件热键不工作 def激活(自身、外壳): self.shell=shell self.action=gtk.action('foo','bar','baz',无) self.activate\u id=self.action.connect('activate',self.call\u bk\u fn,self.shell) self.action\u group=gtk.ActionGroup('hot\u key\u action\u group')) self.action\u group.add\u action\u with\u accel(self.action,“E”) uim=shell.get\u ui\u管理器() uim.insert\u action\u组(self.action\u组,0) uim.U确保更新() def call_bk_fn(自身、外壳): 打印('hello world')

Python rb插件热键不工作 def激活(自身、外壳): self.shell=shell self.action=gtk.action('foo','bar','baz',无) self.activate\u id=self.action.connect('activate',self.call\u bk\u fn,self.shell) self.action\u group=gtk.ActionGroup('hot\u key\u action\u group')) self.action\u group.add\u action\u with\u accel(self.action,“E”) uim=shell.get\u ui\u管理器() uim.insert\u action\u组(self.action\u组,0) uim.U确保更新() def call_bk_fn(自身、外壳): 打印('hello world'),python,gtk,pygtk,rhythmbox,Python,Gtk,Pygtk,Rhythmbox,我在rhythmbox的插件中使用上述代码,在这里我尝试注册键ctr+e,以便在按下组合键时调用call_bk_fn,但它不起作用为什么会这样 我说过的一件事是,您的回调应该是这样的: def activate(self,shell): self.shell = shell self.action = gtk.Action ('foo','bar','baz',None) self.activate_id = self.action.connect

我在rhythmbox的插件中使用上述代码,在这里我尝试注册键ctr+e,以便在按下组合键时调用call_bk_fn,但它不起作用为什么会这样

我说过的一件事是,您的回调应该是这样的:

def activate(self,shell):
        self.shell = shell
        self.action = gtk.Action ('foo','bar','baz',None)
        self.activate_id = self.action.connect ('activate', self.call_bk_fn,self.shell)
        self.action_group = gtk.ActionGroup ('hot_key_action_group')
        self.action_group.add_action_with_accel (self.action, "<control>E")

        uim = shell.get_ui_manager ()
        uim.insert_action_group (self.action_group, 0)
        uim.ensure_update ()
def call_bk_fn(self,shell):
                print('hello world')

希望这能有所帮助:),如果您仍然有一些问题,我认为您应该向我们提供更多有关所引发错误的信息。

@singularity,我更改了,但没有起作用:(,我没有收到任何输出/错误消息:(@Bunny Rabbit:run rb使用这个命令hyrthrombox-D filter现在所有的错误都应该显示在你的终端上;如果你能看到它们,将显示的错误添加到你的问题中。希望它能帮助:)@singularity我已经在使用它了,不,我看不到任何错误,如果你怀疑插件是否处于活动状态,我也用一些打印语句进行了测试,发现它们被打印出来了。@Bunny Rabbit:我仍然不明白为什么你的第一个代码没有引起任何可以输出的错误,因为self.call_bk_fn callback不存在,因为您已经定义了没有self的函数call_bk_fn!!!!顺便说一句,我刚刚通过在回调中添加另一个参数编辑了我的答案,毕竟它非常接近gtk回调方式,请这样尝试,如果它不起作用,您可以在没有键盘事件的情况下尝试,如本例中所示:因为我有一个提示问题出在键盘事件加速器中。@Bunny Rabbit:没有,但这条线路连接('activate',self.call_bk_fn…)应该在后面的代码中引发一个错误,因为没有这样的self.call_bk_fn你明白我的意思吗?我认为如果你能看到以某种方式引发的错误,并且rb没有显示它们,这对你来说将是非常好的,我想,所以没有办法找出错误。也许我错了,因为你告诉我你可以看到调试打印!!!
def call_bk_fn(self, event, shell):
    print('hello world')