3

Glade と Python 3 で UI を構築するのに少し迷っGtkWindowsていGtkBoxます。GtkBoxにはとGtkButton2 つのGtkPanedオブジェクトがあります。各ペインにはGtkEntryオブジェクトがあります。最終的には、これをログイン フォームにしたいと考えています。ユーザーが [接続] ボタンをクリックすると、2 つのGtkEntryオブジェクトのテキスト値がハンドラーによって取得され、サーバーに送信されます。私のコードの関連部分は次のようになります。

class Handler:
    def on_MainWindow_destroy(self, *args):
        Gtk.main_quit(*args)

    def on_LoginButton_clicked(self, *args):
        print(*args)
        #do other stuff


if __name__ == '__main__':
    builder = Gtk.Builder()
    builder.add_from_file('myui.glade')
    builder.connect_signals(Handler())

    window = builder.get_object("MainWindow")
    window.show_all()

    Gtk.main()

(私の質問の元のトピックから少し離れています: Glade で GObjects に名前を付ける正しい方法は何ですか? CamelCase? lowercase_underscores?)

LoginButton がクリックされたときに、両方のフィールドのテキストで何かをしたい。ただし、Glade では、1 つのオブジェクトをハンドラーに渡すオプションしかありません。on_LoginButton_clickedメソッドを2 回アタッチしLoginButtonて、最初の呼び出しでユーザー名フィールドを渡し、2 回目の呼び出しでパスワード フィールドを渡すことができますが、これは非常に面倒です。これを行う正しい方法は何ですか?

4

1 に答える 1

2

GtkBuilder の を使用して、クラス内の両方のオブジェクトへの参照が必要ですget_object()。次に、ボタンのコールバックで、両方のテキストを取得しますself.myfield1.get_text()。PyGObject アプリケーションを構築する方法については、このテンプレートを確認してください。

GUIを使ったプログラムはどのように構築できますか?

それが役に立てば幸い。

編集: 命名スキームについては、Glade ファイルを使用する言語で使用されている命名スキームを使用します。PyGObject でプログラミングする場合、Glade ファイルのオブジェクトに Python 変数と同じ名前を付けて、これを実行できるようにします。

[...]
go = self.builder.get_object
self.window = go('window')
self.my_foobar = go('my_foobar')
[...]
于 2013-09-14T04:13:02.320 に答える