4

次のコード

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()メッセージに移動すると正しく表示されることです)

4

1 に答える 1

2

nautilus メーリング リストで、Ahmad Sherif が私のエラーを見つけました。

5 番目の引数は文字列または None のいずれかである必要があり、変数名は nautilus.FileInfo 型であるため gtk.MessageDialog はコードで機能しませ んalert(name.get_name()) 。.FileInfo.alert(name)

これを指摘してくれた Ahmad に感謝します。

2 回目の投稿で、Ahmad はデバッグを改善する方法を説明しました。

ターミナルから Nautilus を起動していれば、このようなデバッグ情報を取得できたと思います。[…]
まず Nautilus を終了し ( nautilus -q)、起動する ( nautilus --no-desktop) 必要があります。[nautilus] が [終了後に] [自動的に] 再スポーンした場合は、/usr/share/applications/nautilus.desktop を次のように編集する必要があります (バックアップを取っておくことをお勧めします)。

  • 「X-GNOME-AutoRestart=true」を「X-GNOME-AutoRestart=false」に置き換えます
  • この行の先頭にある「X-GNOME-Autostart-Phase=Desktop」を「#」でコメントアウトします。実際、なぜこれを行ったのか忘れましたが、これが私の構成です:)。
  • この行「AutostartCondition=GNOME /apps/nautilus/preferences/show_desktop」を追加します
  • 最後に、セッションを再起動してから、終了して再度起動してください。

クレジットはwrc1944 […] のリスポーン ソリューションに送られます。

Ahmad が説明した手順を適用すると、自分の欠陥のあるコードが生成したエラー メッセージを確認できました。

于 2010-08-22T19:40:28.243 に答える