web-dev-qa-db-ja.com

Gladeはpython pygiイントロスペクションで使用できますか?

私はかつてPyGtkとGladeのチュートリアルを始めましたが、それを終えることはありませんでした。最近、PyGtkは https://wiki.ubuntu.com/MeetingLogs/appdevweek1104/GObjectIntrospection および https://wiki.ubuntu.com/MeetingLogs/appdevweek1104/PyGI 。 pythonとGtkを新しい方法で再度学習することにしました。 Gladeを使用したいのですが、これを行う方法と新しいイントロスペクションを使用する方法はありますか?

5
Azendale

はい、実際にはほぼ同じです。

from gi.repository import Gtk

class Test (object):

    def __init__(self):
        self.builder = Gtk.Builder()
        self.builder.add_from_file("test.glade")
        self.builder.connect_signals(self)

    def run(self, *args):
        self.builder.get_object("window1").show()
        Gtk.main()

    def quit(self, *args):
        Gtk.main_quit()


Test().run()

多くの小さなプログラムは、変換にほとんど労力を要しません。次の2行を使用してgobjectイントロスペクションに切り替えることから開始し、参照でエラーを調べてエラーを修正できます。

from gi.repository import Gtk as gtk
from gi.repository import Gobject as gobject

たとえば、イントロスペクションを使用している場合、gtk.RESPONSE_OKGtk.ResponseType.OKと呼ばれます。

7
Stefano Palazzo

GTK 3インターフェースを作成するにはGlade 3.10以降が必要であることに注意してください。 3.8以前はGTK 2用です。Ubuntuでは、パッケージはgladeおよびglade-gtk2

(古い)PyGTKアプリをPyGIに変換する必要がある場合は、PyGObject tarballに付属のpygi-convertスクリプトを試してください。多くの場合、これでアプリケーションを変換できます。 GITにもあります: http://git.gnome.org/browse/pygobject/tree/pygi-convert.sh

次のリンクは、変更された一般的な事項の基本的な説明にも役立ちます。 https://live.gnome.org/PyGObject/IntrospectionPorting

そして最後に、PyGIチュートリアルを作成する(非常に素晴らしい)取り組みがあります。 http://readthedocs.org/docs/python-gtk-3-tutorial/en/latest/index.html

何かを構築するときにCのドキュメントを見ると便利です。 http://developer.gnome.org/gtk3/ Pythonですべてがどのように行われるかを理解したら、これはまだ文書化されていないもののための良いリソース。他の回答にあるgtk.RESPONSE_OKの例を見てみましょう。 Cドキュメントにアクセスすると、次のことがわかります。 http://developer.gnome.org/gtk3/3.2/GtkDialog.html#GtkResponseType 列挙名(GtkResponseType)を取得し、 Gtk '部分をドットで区切り、GTK_ *部分のない列挙型を追加すると、次のようになります:Gtk.ResponseType.OKこれは私が出会ったすべての列挙型で動作します。

2
Timo