2014-12-03 2 views
1

이것은 내 첫번째 파이썬 개인 프로젝트입니다. Tkinter를 사용하여 사용자에게 값을 입력하도록 요청하는 창 (보호자 찾기)을 만들고 싶습니다. 선원 보호자를 입력 상자에 입력하십시오. 나머지 프로그램은 선원 보호자에게 반응하는 if/else 문을 입력 할 때 사용자가 입력 상자에 입력하는 내용에 따라 다릅니다.Tkinter 다른 파일의 값으로 저장 상자 값

내가 겪고있는 문제는 입력란에 입력 된 내용을 if/else 문에 대한 내 주 파일에서 사용할 변수로 저장하는 것입니다. 프롬프트 창에 인쇄 할 값을 얻을 수 있지만 전역 변수에 성공적으로 저장할 수 없었습니다.

My Tkinter 창이 자체 클래스입니다.

나는 stackoverflow에서 비슷한 문제를 기반으로 이렇게 여러 가지 방법을 시도했지만 매번 오류가 발생합니다. 이것은 여전히 ​​오류를 생성하는 내 기본 코드입니다. Tkinter의 창

class GuardianLocator: 

def __init__(self, master): 
    frame = Frame(master) 
    frame.grid() 
    master.title("GUARDIAN LOCATOR") 

    self.locator_label = Label(frame, text="Which Sailor Guardian are you looking for?", width=40, height=2) 
    self.locator_label.grid() 

    self.entry = Entry(frame) 
    self.entry.grid() 

    self.button1 = Button(frame, text="Search", command=self.guardian_name, pady=2) 
    self.button1.grid() 

def guardian_name(self): 
    print(self.entry.get()) 

와 내 주요 작업 파일

root = Tk() 
locator = guardian_locator.GuardianLocator(root) 

root.mainloop() 

이 그것을 작동하고 있는지 확인하기 위해 내 테스트 루프에서

클래스 파일.

if locator.guardian_input() is "Sailor Moon": 
    print("hi") 
else: 
    print("no") 

답변

1

코드가 어디에 위치하여 "테스트 루프"입니다 조직,하지만 난 그게 root.mainloop() 후 가정 정확히 얼마나 확실하지. 따라서 스크립트는 다음과 같을 수 있습니다.

from tkinter import * 


class GuardianLocator: 

    def __init__(self, master): 
     self._name = "" 
     frame = Frame(master) 
     frame.grid() 
     master.title("GUARDIAN LOCATOR") 

     self.locator_label = Label(frame, text="Which Sailor Guardian are you looking for?", width=40, height=2) 
     self.locator_label.grid() 

     self.entry = Entry(frame) 
     self.entry.grid() 

     self.button1 = Button(frame, text="Search", command=self.guardian_name, pady=2) 
     self.button1.grid() 

    def guardian_name(self): 
     self._name = self.entry.get() 
     print(self.entry.get()) 


root = Tk() 
locator = GuardianLocator(root) 

root.mainloop() 

# this will be executed after the root window is closed. 
print("Name is", locator._name) 

생성자에 self._name = ""을 적어 두십시오. 이 인스턴스 변수는 GuardianLocator 창에 제공된 이름을 저장하는 데 사용할 수 있습니다.

+0

Omgosh that works! 나는 아주 비슷한 방법을 일찍 시도했지만 어떻게 든 그것을 망쳐 놓았어야합니다. Marcin 감사합니다! – djohnson129

+0

@ djohnson129 anwser가 좋다면 받아들이는 것도 좋을 것입니다 :-) – Marcin

+0

체크 표시를 의미하는 경우 방금했습니다. 나는 아직 그것에 대해 몰랐다 : / – djohnson129

관련 문제