0

これが良い質問でない場合は、ご容赦ください。Python の URWID ライブラリのコードの 1 つを理解するのに苦労しています。これは、チュートリアルのサンプル コードの 1 つです。http://urwid.org/tutorial/index.html

 1 import urwid

 2 def exit_on_q(key):
 3   if key in ('q', 'Q'):
 4     raise urwid.ExitMainLoop()

 5  class QuestionBox(urwid.Filler):
 6    def keypress(self, size, key):
 7      if key != 'enter':
 8        return super(QuestionBox, self).keypress(size, key)
 9      self.original_widget = urwid.Text(
 10       u"Nice to meet you,\n%s.\n\nPress Q to exit." %
 11       edit.edit_text)

 12  edit = urwid.Edit(u"What is your name?\n")
 13  fill = QuestionBox(edit)
 14  loop = urwid.MainLoop(fill, unhandled_input=exit_on_q)
 15  loop.run()

私の質問は

1) Keypress 関数は、キーストロークを入力として受け取ります。コードのどの行でキーストロークが 'key' 変数に割り当てられているのか理解できませんでした。7行目の初期化なしで直接使用されます

    if key != 'enter':

これはどのように可能ですか?

2) Keypress 関数が QuestionBox クラスの外で呼び出されていない。関数を呼び出さなくても、なぜ実行されるのですか?

3)新しいクラス QuestionBox 内で定義されたinit関数はありません。なぜそれが必要ないのですか? クラス定義にinitsuperの両方が必要だと思います。

4) 「keypress」関数の「size」フィールドは何ですか?

前もって感謝します

4

1 に答える 1