代码之家  ›  专栏  ›  技术社区  ›  Nils

在使用python的nautilus扩展中使用gtk

  •  4
  • Nils  · 技术社区  · 14 年前

    以下代码

    import gtk
    import nautilus
    import os
    def alert(message):
        """A function to debug"""
        dialog = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_CLOSE, message)
        dialog.run()
        dialog.destroy()
    
    class TestExtension(nautilus.MenuProvider):
        def __init__(self):
            pass
    
        def get_file_items(self, window, files):
            items = []
            """Called when the user selects a file in Nautilus."""
            item = nautilus.MenuItem("NautilusPython::test_item", "Test", "Test")
            item.connect("activate", self.menu_activate_cb, files)
            items.append(item)
            return items
    
        def menu_activate_cb(self, menu, files):
            """Called when the user selects the menu."""
            for name in files:
                alert(name)
    


    然而

    import easygui
    import nautilus
    import os
    
    def alert(message):
        """A function to debug"""
        easygui.msgbox(message)
    
    class TestExtension(nautilus.MenuProvider):
        def __init__(self):
            pass
    
        def get_file_items(self, window, files):
            items = []
            """Called when the user selects a file in Nautilus."""
            item = nautilus.MenuItem("NautilusPython::test_item", "Test", "Test")
            item.connect("activate", self.menu_activate_cb, files)
            items.append(item)
            return items
    
        def menu_activate_cb(self, menu, files):
            """Called when the user selects the menu."""
            for name in files:
                alert(name)
    

    (更好的是,在将alert()移动到 get_file_items() 信息显示正确)

    1 回复  |  直到 14 年前
        1
  •  2
  •   Nils    14 年前

    nautilus mailing list 艾哈迈德·谢里夫发现了我的错误:

    必须是string或None,并且变量名的类型为 alert(name.get_name()) 不仅仅是 alert(name)
    the docs

    感谢艾哈迈德指出这一点。

    second posting Ahmad解释了如何更好地调试:

    我想如果你发射了鹦鹉螺,你就可以得到这样的调试信息 从终端。[]
    你应该先离开鹦鹉螺( nautilus -q nautilus --no-desktop ). 如果[nautilus]确实[automatically]重新生成[after quitting],您应该编辑 好主意):

    • 添加此行“AutostartCondition=GNOME/apps/nautilus/preferences/show\u desktop”
    • 最后,您应该重新启动会话,然后尝试退出并再次启动。

    wrc1944 []对于重生解决方案。

    应用艾哈迈德解释的步骤,我能够看到我的错误代码生成的错误消息。