キーボード入力を処理し、適切な関数を実行するメソッドを作成しようとしました (オプションでいくつかの引数を使用)。したがって、次のようないくつかのキーボードマッピングでdictを使用しています
mappings = {
'q' : (quit , None),
KEY_HOME : (move_to_line , 1),
KEY_END : (move_to_line , widget.last_line)
}
ハンドラー関数自体は次のようになります。
def handle_input(user_input):
if user_input in mappings.keys():
func = mappings[user_input][0]
args = mappings[user_input][1]
if args == None:
func()
elif type(args) == list:
func(*args)
elif type(args) == dict:
func(**args)
else:
func(args)
これで、関数は最初の 2 つの dict エントリに対して適切に機能します。3回目のエントリーの場合、widget.last_line
変更すると動作しません。これはウィジェットのプロパティですが、Python コンパイラはこのエントリを定数値として処理しているようです。そのようなエントリを「揮発性」に保つ方法はありますか、またはそのような操作を実行するためのより良い方法はありますか?