2

問題

私の問題は非常に単純ですが、グーグルで調べても簡単に対処する方法がわかりませんでした。

だから私はチェックボタンを持っています:

self.but_val = IntVar()
self.but = Checkbutton(frame, text="text", variable=self.but_val)

このチェックボタンは、GUI 上の一部のファイル パスの更新をトリガーします。

self.but.bind('<ButtonRelease-1>', 
        lambda e: self.update_files_path(e), add='+')

ではupdate_files_path(event)、チェックボタンの値を取得して、表示するファイル パスを選択する必要があります。

if self.but_val.get() == 0:
    [...]
else:
    [...]

私が抱えている問題は、クリックする前にボタンの値を取得することです。 また、ファイル パスの処理はさまざまなボタンの値に依存するため、反対の値をそのまま使用することはできません。

私の現在の回避策

現時点では、クリックの前にトリガーされ、GUI の状態を保存する関数があります。

self.but.bind('<ButtonPress-1>', lambda e,
    self.save_design_opts_state(self.buttons_to_backup,
        self.before_clic_vars_state), add='+')

次にupdate_files_path(event)、クリック後の GUI 状態を推測する関数を呼び出します。

gui_state = self.get_gui_state(event)

この関数を実装するのは非常に面倒です。なぜなら、私は多くのことをする必要があるからです:タイプに応じて必要なすべてのボタンの

これに対処する簡単な方法はありますか?

ご協力ありがとうございました!

4

1 に答える 1

1

独自のバインディングを設定しないでください。commandチェックボタンのオプションを使用します。このオプションを使用すると、値が変更された後に実行するコマンドを指定できます。他にも方法はありますが、これは問題を解決する最も簡単で一般的な方法です。

于 2013-07-17T11:17:46.377 に答える