Glade経由でGtkFileChooserButtonをアプリに追加しました。フォルダ選択モードに設定されています。ウィジェットをクリックすると、最後に「その他」オプションを含むNautilusブックマークのドロップダウンリストが表示されます。 「その他」をクリックすると、新しいファイル選択ダイアログが起動します。ボタンは、他のカスタムファイル選択ダイアログに接続されていません。
私が使用している接続信号は「ファイルセット」であり、Gtk.FileChooser.get_current_folder()を使用してユーザーが選択したフォルダーのフルパスを取得しています。
ユーザーが「その他」オプションからフォルダーを選択した場合、このセットアップは正常に機能します。ただし、ユーザーがドロップダウンリストからブックマークを選択した場合、パスは返されません。これを解決するには?
このドロップダウンリストを無効にして、直接ファイル選択ダイアログに移動する方法はありますか? GtkFileChooserButtonのみを使用して、ユーザーが選択したフォルダーのプレビューを取得できるようにします。
ファイルセット信号は、ユーザーがファイルを変更した場合にのみ送信されるため、知る必要がある場合は実際にget_current_folder()呼び出しを行う必要があります。ファイルセット信号が呼び出されたときではなく、パス。 documentation から、ユーザーがフォルダー選択モードでブックマークからパスを選択したときに通知を受け取る方法がありません。
ただし、代替として、通常モードでFileChooserButtonを使用し、単にget_current_folder
file-set
信号が送信されます。これにより、ファイルが選択されたときにユーザーがいるディレクトリが表示されます。残念ながら、この場合、ユーザーが実際にディレクトリを使用しているときにボタンにファイル名が表示されるため、UIも奇妙に見えます。
また、このユースケースとそれがどのように使用できないかについて、アップストリームGTK +に対してバグを登録する必要があります。ファイルセット信号は、非推奨となり、パスセットに名前を変更し、両方のモードで使用する必要があります。
GtkFileChooser
から継承したcurrent_folder_changed
信号を使用しましたが、ブックマークでも機能するようです。
フォルダー選択モードのGtkFileChooserButtonは、フォルダーURIを返すことができます。 URIをパスに変換するには、urlparse
モジュールを使用します。これはブックマークでも機能します。これで問題が解決することを願っています。
import urlparse
folder_uri = filechooserbutton_meas.get_uri()
folder = urlparse.urlparse(folder_uri).path
ユーザーが「その他」オプションからフォルダーを選択した場合、このセットアップは正常に機能します。ただし、ユーザーがドロップダウンリストからブックマークを選択した場合、パスは返されません。これを解決するには?
GtkFileChooserButton、「フォルダー選択」モード。次のコードで十分です。
def on_mybutton_selection_changed(self, w):
print "selected folder: ", w.get_file().get_path()
ブックマークも含め、ドロップダウンメニューのすべての選択でディレクトリパスを取得します。
GtkFileChooserから継承したcurrent_folder_changedシグナルを使用しましたが、ブックマークでも動作するようです。
W.get_current_folder()に関する注意。ユーザーがドロップダウンメニューで選択したフォルダーではなく、「その他」オプションからフォルダーを選択した場合、最後に選択したフォルダーを返します。