2012-10-06 3 views
0

Ive는 가능한 한 많은 기사를 읽으려고했지만 나에게 도움이되는 것을 찾을 수 없습니다. 내 코드에서는 다른 것들 사이에 항목 위젯이있는 클래스 EntryWidget을 만들었고 응용 프로그램의 주 클래스 컨트롤러에서 self.entry라는 EntryWidget 클래스의 인스턴스를 만들었습니다. 나는 주로 항목 위젯에서 텍스트를 가져 와서 조작하는 ok 버튼에 대한 명령이 될 메소드를 작성하려고합니다. 이 코드는 메인 클래스 컨트롤러에서입니다 :PYTHON TkInter - 변수로 입력 위젯 텍스트 설정 및 액세스

 def ok(self): 
     self.input = self.entry.get() 
     self.command = "" 

오류 :

 AttributeError: EntryWidget instance has no attribute 'get' 

생각은 텍스트가 다음 확인 버튼이 메소드를 호출하는 타격, 입력이다. 죄송합니다. 이전에 물어 본 적이 있지만 다른 답변을 읽었지만 도움이되지 않습니다.

감사

답변

2

당신의 EntryWidget 클래스 Tkinter.Entry를 서브 클래스하지 않는 경우, 당신은 당신의 EntryWidget 클래스 get() 방법을 정의해야합니다. 오류는 self.entryEntryWidget 인스턴스이지만 get() 메서드를 포함하지 않는다고 말합니다.

+0

감사합니다. 틀림없이 프레임에서 상속됩니다. 어떻게 get 메소드를 정의하겠습니까? – chris

+0

@ user1710566'get' 메쏘드로 무엇을 하려는지 모르겠지만'EntryWidget' 클래스에서 정의하기 만하면'def get (self) : # 뭔가 할 일이 생깁니다. 당신의'WidgetEntry' 클래스에서'want '를 선택하십시오. –

+0

나는 변수에 할당 할 수있는 문자열로 상자에서 텍스트를 가져오고 싶습니다. 어떤 일을하고자하는 것입니까? def get (self) : input = entry.Tkinter.Entry.get() return input – chris

0

저는 사용자가 tkinter.Entry에 값을 입력 할 수있게 해주는 작은 함수를 작성한 후 함수는 사용자의 입력을 반환합니다.

def getInput(title, message): 
    class inputGUI(tkinter.Tk): 
     def __init__(self): 
      tkinter.Tk.__init__(self) 
      self.title(title) 
      self.l=tkinter.Label(self,text=message, width = 30, pady = 10, padx = 5).pack() 
      self.e=tkinter.Entry(self, width = 30) 
      self.e.pack() 
      self.e.focus() 
      self.gap=tkinter.Label(self,text="", width = 50, pady = 0, padx = 5).pack() 
      self.b=tkinter.Button(self,text='Submit',command=self.cleanup, width = 20, pady = 10, padx = 5).pack() 
      self.gap=tkinter.Label(self,text="", width = 30, pady = 0, padx = 5).pack() 
     def cleanup(self): 
      self.userInput=self.e.get() 
      self.destroy() 
    root = inputGUI() 
    root.focus() 
    root.wait_window(root) 
    valueOut = root.userInput 
    return valueOut 

참고 : 입력 확인은 없지만 추가하기는 쉽다는 것을 알고 있습니다.