2012-05-28 5 views
1

저는 파이썬으로 간단한 tkinter GUI를 만들고 있으며 배치 할 약 10 개 이상의 레이블이 필요합니다. 그리드 메서드를 사용하여 레이블을 배치하지만 일정량 후에 "TypeError : Label 개체를 호출 할 수 없습니다."라는 오류가 발생합니다. 다음은 라벨 및 격자 배치 코드입니다.Python tkinter 레이블을 호출 할 수 없습니다.

UnitPointLabel = ttk.Label(root, text = unit_points) 
UnitLabel = ttk.Label(root, text = unit) 
HQ1 = ttk.Label(root, text = "HQ:") 
HQ2 = ttk.Label(root, text = "HQ:") 
Elite1 = ttk.Label(root, text = "Elite:") 
Elite2 = ttk.Label(root, text = "Elite:") 
Elite3 = ttk.Label(root, text = "Elite:") 
Troop1 = ttk.Label(root, text = "Troop:") 
Troop2 = ttk.Label(root, text = "Troop:") 
Troop3 = ttk.Label(root, text = "Troop:") 
Troop4 = ttk.Label(root, text = "Troop:") 
Troop5 = ttk.Label(root, text = "Troop:") 
Troop6 = ttk.Label(root, text = "Troop:") 
Fast_Attack1 = ttk.Label(root, text = "Fast Attack:") 
Fast_Attack2 = ttk.Label(root, text = "Fast Attack:") 
Heavy_Support1 = ttk.Label(root, text = "Heavy Support:") 
Heavy_Support2 = ttk.Label(root, text = "Heavy Support:") 
Heavy_Support3 = ttk.Label(root, text = "Heavy Support:") 



UnitPointLabel.grid(row = 3, column = 7) 
HQ1.grid(row = 3, column = 5) 
HQ2.grid(row = 4, column = 5) 
Troop1.grid(row = 5, column = 5) 
Troop2.grid(row = 6, column = 5) 
Troop3.grid(row = 7, column = 5) 
Troop4.grid(row = 8, column = 5) 
Troop5.grid(row = 9, column = 5) 
Troop6.grid(row = 10, column = 5) 
Fast_Attack1.grid(row = 11, column = 5) 
Fast_Attack2.grid(row = 12, column = 5) 

Stops working here: Heavy_Support1(row = 3, column = 6) 
Heavy_Support2(row = 2, column = 6) 
Heavy_Support3(row = 3, column = 6) 

알다시피 나는 행과 열을 움직이려고했지만 여전히 작동하지 않는 것을 보았습니다. 왜 이런 일이 일어나는 지 아십니까?

답변

4

첫 번째 디버깅 규칙 : 오류 메시지가 진실임을 알리는 것으로 가정합니다. 그것은 무엇을 말하는가? 그것은 "레이블 객체는 호출 가능하지 않습니다"라고 말합니다. 즉, Label 객체의 인스턴스이고 Label을 호출하려고하는 객체가 있음을 의미합니다. 예 : "foo = Label (...); ...; foo()".

그래서 코드를 보면 어떤 라벨 객체를 호출하려고합니까? 이 세 라인을 살펴 보자 : (. 등) ​​

Heavy_Support1(row = 3, column = 6) 
Heavy_Support2(row = 2, column = 6) 
Heavy_Support3(row = 3, column = 6) 

까지 당신의 코드를 통해 다시 찾고 나는 Heavy_Support1이 레이블의 모든 인스턴스 것을 볼, 당신은 실제로 그것을 호출하려고합니다.

길게 이야기하면, 그 행에 .grid을 추가하는 것을 잊어 버린 것 같습니다. 그들은 다음과 같아야합니다 :

Heavy_Support1.grid(row = 3, column = 6) 
Heavy_Support2.grid(row = 2, column = 6) 
Heavy_Support3.grid(row = 3, column = 6) 
관련 문제