9

GSettings スキーマが存在し、コンパイルされている場合、通常、そこからの読み取りに問題はありません。ただし、存在しない場合は、通常、処理できないエラーがスローされます。Python ファイルまたはコンソールでこれを試してください。

from gi.repository import Gio
try:
    settings = Gio.Settings("com.example.doesnotexist")
except:
    print "Couldn't load those settings!"

で可能な限り広くしていexceptますが、これがスローされるエラーです。

(プロセス:10248): GLib-GIO-ERROR **: 設定スキーマ 'com.example.doesnotexist' がインストールされていません

私が基本的にやりたいことは、com.example.doesnotexistスキーマが存在するかどうかを調べることです。そうでない場合は、アプリケーションを使用する前にセットアップ スクリプトを実行するようにユーザーに指示します。これを行うことに関する他の提案は大歓迎です。

4

2 に答える 2

7

GSettingsSchemaSourceを使用できます。例えば:

> from gi.repository import Gio
> source = Gio.SettingsSchemaSource.get_default()
> source.lookup("org.gnome.Epiphany", True)
<GSettingsSchema at 0xa462800>
> source.lookup("com.example.doesnotexist", True)

>

ドキュメントによると、スキーマが存在しない場合、ルックアップはNULLNone)を返す必要がありますが、PyGObjectではNoneTypeを返します。とにかく、スキーマが存在するかどうかを確認するために使用できます。

于 2013-01-17T03:55:38.843 に答える