2011-11-28 2 views
2

내 라벨 위젯의 텍스트 주위에 중괄호가 표시됩니다. 출력은 Total tries: 0 대신 {Total tries: 0}입니다. 여기 레이블 위젯에서 텍스트 주위에 왜 못생긴 중괄호가 표시됩니까? - Tkinter

내 코드의 짧은 버전 : 그런 일이 왜 모르겠어요

class Cell: 
    def check(self): 
     mem.tries += 1 
     mem.update_tries() 

class Memory(Frame): 
    def __init__(self, master): 
     super(Memory, self).__init__(master) 
     self.grid() 
     self.create_widgets() 
     self.tries = 0 

    def create_widgets(self): 
     self.label = Label(self) 
     self.label["text"] = "Total tries: 0", 
     self.label["font"] = ("Helvetica", 11, "italic") 
     self.label.grid(row = 7, columnspan = 7, pady = 5) 

    def update_tries(self): 
     self.label["text"] = "Total tries: " + str(self.tries) 

root = Tk() 
root.title("Memory") 
root.geometry("365x355") 
mem = Memory(root) 
root.mainloop() 

답변

5
self.label["text"] = "Total tries: 0", 

줄 끝에 쉼표가있다. 쉼표는 self.label["text"]에 할당되는 값을 문자열에서 튜플로 변경합니다. 쉼표를 제거하면 중괄호가 제거됩니다.

+0

그것은 그것을 만들었다! 나는 잊어 버린 멍청한 점이나 쉼표가 싫다. – Amazon

+1

'self.label [ "text"]'에 대한 문서는 어디에서 찾을 수 있습니까? 나는'textvariable/StringVar' 방법에 대해서만 알았습니다. – unutbu

+1

"절대 초급 - 제 3 판을위한 파이썬 프로그래밍"책에서 "self.label ["text "]" – Amazon

0

; 그러나 나는 Tkinter를 사용할 때 항상 StringVar 또는 config 메서드를 사용하여 텍스트 업데이트를 수행했습니다. Here's 몇 가지 예제가있는 페이지. 사용

예 A StringVar :

# in class Memory 

def create_widgets(self): 
    self.labelText = StringVar() 
    self.label = Label(self, textvariable = self.labelText) 
    ... rest of method ... 

def update_tries(self): 
    self.labelText.set("Total tries: " + str(self.tries)) 
+0

나는 그것을 작동시키지 못했습니다 ... 해당 페이지로 연결되는 링크 주셔서 감사합니다 :) – Amazon

+0

@Amazon - 구체적으로 무엇을 할 수 없었습니까? –

+0

나는 아직도 중괄호를 가지고있다. 문제는 지금 해결되었습니다. 어쨌든 당신의 도움에 감사드립니다. – Amazon

관련 문제