2016-08-31 8 views
0

私は高値と低値を検索しましたが、今私が何をやっているのか分かりませんでした。私はカレンダーで選択された日付を対応する入力フィールドに表示しようとしています。しかし、私は、このエラーメッセージが表示されます:Python2.7、Tkinter:インスタンスに__call__メソッドがありません

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\NAME\Continuum\Anaconda2\lib\lib-tk\Tkinter.py", line 1537, in __call__ 
return self.func(*args) 
    File "/Desktop/scripts/Test.py", line 503, in show_Calendar2 
    self.initialtext2.set(calendar(format_str='%02d-%s-%s')) 
AttributeError: Calendar2 instance has no __call__ method 

Hereはそれでカレンダーとスクリプトへのリンクです。カレンダーは機能し、クリックされたときに選択された日付が印刷されますが、メインウィンドウの各カレンダーボタンの横にある入力欄に選択した日付を入力する方法はわかりません。

私が使用してみました:

self.initialtext2.set(calendar.get_date(format_str='%02d-%s-%s')) 

およびその他のいくつかのバリエーションが、私はこれを行う方法のよう途方に暮れてよ。どんな助けや指導も感謝しています。前もって感謝します!

答えて

0

instance has no __call__ methodは、あなたがこのような何かをやっている意味:

class SomeClass():... 

# create instance of the class: 
something = SomeClass() 

# try to call the instance: 
result = something() 

SomeClass__call__が定義されていない場合、あなたはあなたが取得しているエラーが発生します。

エラーは、ほとんどこの文から来ている:

​​

したがって、calendar

calendar(format_str='%02d-%s-%s') 

あなたはあなたにリンクされたコードでは、その前に2つの行を見ると、あなたがこれを参照してくださいよ関数ではないので、呼び出すことはできません。

+0

@TheHoff: 'foo(...)'を実行すると、 'foo'という名前の関数が呼び出されています。したがって、 'calendar(format_str ...)'を実行すると、 'calendar'という名前の関数が呼び出されます。しかし、 'calendar'は関数ではないので、呼び出すことはできません。 –

+0

ですが、カレンダーは: 'calendar = Calendar1(自己、format_str = '%02d-%s-%s')' カレンダーはCalendar1関数を正しく呼び出す必要がありますか? – TheHoff

+0

@TheHoff:いいえ、 'Calendar1'は関数ではないので、クラスです。 'Calendar1'のインスタンスを作成し、それを' calendar'変数に代入しています。 'calendar'は' Calendar1'型のオブジェクトではありません。これは、 'foo = Frame()'が 'Frame'型のオブジェクトを作成し、それを' foo'に割り当てる方法と変わりません。 –

関連する問題