2017-08-13 7 views
0

私はPythonの初心者です。ですから、私はGUIをコーディングしています。その一環として、エントリーウィジェットのバインディングを指定したいと思います。特定のイベントが発生したときにエントリーウィジェットが開始するようにするコマンドが似ているので、すべての入力フィールドをFIELDSという名前のクラスの一部として定義できると、スペースと労力を節約できると思いました。次に、そのクラスの一部としてメソッドを定義して、get関数を適用した結果を出力します。以下はコードですTkinterの入力フィールドのクラスを定義できません。

from tkinter import * 
class FIELDS(Entry): 
''' 
Inherits from Entry class so that methods like pack() can be used 
''' 
    def x(event): #method to print what was typed in the entry field. 
     print(str(self.get())) #prints the input text 

root = Tk() 
entry_field = Entry(root) 
entry_field = FIELDS() 
entry_field.pack() 
entry_field.bind('<Return>', FIELDS.x) 
root.mainloop 

これを実装すると、「self」という名前は定義されていません。完全なエラーは実際はかなり長いので、必要に応じて共有することができます(質問を簡潔にするためではありません)。インスタンス化では、私は自己としてentry_fieldを渡しました。このエラーが表示されるのはなぜですか?また、このエラーを修正する方法はありますか?

答えて

0

コードにいくつか問題があります。

  1. docstringが間違ってインデントされています。クラス内のコードと同じインデントされる必要があります。
  2. selfパラメータを含めるには、xを定義する必要があります。これはtkinter固有の要件ではなく、クラスがどのようにPythonで動作するかだけです。
  3. クラス上ではなく、インスタンス上でメソッドを呼び出す必要があります。バインディングを `entry_field.bind( ''、entry_field.x)に変更する必要があります
関連する問題