2016-08-31 4 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 = Calendar2(self, format_str='%02d-%s-%s') 

: 당신은 당신이에 연결 코드에서 그 전에 두 줄을 보면

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

, 당신은이를 볼 수 있습니다 함수가 아니므로 호출 할 수 없습니다.

+0

@TheHoff :'foo (...)'를 할 때'foo'라는 _function_를 _ 호출하고 있습니다. 그래서, 당신이'calendar (format_str ...)'를 할 때, 당신은 _function_calling이라는 이름을 갖게됩니다. 그러나'calendar'는 함수가 아니므로 호출 할 수 없습니다. –

+0

이지만 캘린더는 다음과 같습니다. 캘린더 = 캘린더 1 (자체, format_str = '% 02d- % s- % s') ' 캘린더는 Calendar1 함수를 올바르게 호출해야합니까? – TheHoff

+0

@TheHoff : 아니요, 'Calendar1'은 함수가 아니기 때문에 클래스입니다. 'Calendar1'의 인스턴스를 생성하고 그것을'calendar' 변수에 할당하려고합니다. 'calendar'는'Calendar1' 타입의 객체가 아닙니다. 이것은'foo = Frame()'이'Frame' 타입의 객체를 생성하고 그것을'foo'에 할당하는 것과 다르지 않습니다. –

관련 문제