0

pygtk を使用してファイル チューザー ウィジェットを作成しています。Ubuntu OS を使用しています。ファイルの選択にフィルターをかけたい。私のセレクター ウィジェットは、実行可能ファイル (ダイヤモンド アイコンまたは Ubuntu) のみを選択する必要があります。以下のコードを使用しようとしています:

dialog  = gtk.FileChooserDialog(title=None,action=gtk.FILE_CHOOSER_ACTION_OPEN,
                                  buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OK,gtk.RESPONSE_OK))

filter_file = gtk.FileFilter()
filter_file.add_pattern("*.bin")
filter_file.add_pattern("*.run")
filter_file.add_pattern("*.sh")
dialog.add_filter(filter_images)
dialog.show()

機能していません。選択ウィンドウに実行可能ファイルは表示されません。Ubuntuには実行可能ファイルの拡張子がないように見えるため、実行可能ファイルにフィルターをかける方法はありますか。

4

1 に答える 1

0

私はgtkに精通していませんが、のドキュメントをざっと見てみると、ファイルのパーミッションビットを取得して実行可能かどうかを判断できるカスタムフィルター関数を作成できるようになると思います。 . 例えば:gtk.FileFilterFileFilter.add_customFileFilter.add_pattern

import os

def executable_filter(filter_info, data):
    path = filter_info[0]
#   Note that this only checks if the current effective user may execute the file.  If you need to know if owner/group/other can execute it, you'll probably want something from the os.stat module.
    return os.access(path, os.X_OK)

filter_file.add_custom((gtk.FILE_FILTER_FILENAME, None, None, None), executable_filter, None)

gtk をセットアップしていないため、これをテストすることはできませんが、このアプローチは機能すると思います。

于 2013-08-09T22:01:57.607 に答える