2016-09-17 2 views
1

개인 정보를 입력하는 항목 위젯을 만들고 싶습니다. 그러나 변수를 변수로 저장하려고하므로 txt 파일에 쓸 수 있습니다.입력 한 내용을 저장하는 입력 위젯을 얻으려면 어떻게해야합니까? Python Tkinter

from tkinter import * 
root = Tk() 
Label(root, text = "Childs First name").grid(row = 0, sticky = W) 
Label(root, text = "Childs Surname").grid(row = 1, sticky = W) 
Label(root, text = "Childs Year of Birth").grid(row = 2, sticky = W) 
Label(root, text = "Childs Month of Birth").grid(row = 3, sticky = W) 
Label(root, text = "Childs Day of Birth").grid(row = 4, sticky = W) 

Fname = Entry(root) 
Sname = Entry(root) 
x = Entry(root) 
y = Entry(root) 
z = Entry(root) 


Fname.grid(row = 0, column = 1) 
Sname.grid(row = 1, column = 1) 
x.grid(row = 3, column = 1) 
y.grid(row = 2, column = 1) 
z.grid(row = 4, column = 1) 

Fname = Fname.get 
Sname = Sname.get 
x = x.get 
y = y.get 
z = z.get 
mainloop() 

내 코드는 절대적으로 문제가 없지만 입력 한 내용을 저장하지는 않습니다. 분명히 코드 덩어리가 없지만 코드가 무엇인지 모르겠습니다.

P.S 또한 너무 많지 않은 경우 다음 코드 줄로 계속 진행하려면 어떻게해야합니까?

답변

0

엔트리 위젯에는 필요시 값을 가져 오는 데 사용할 수있는 get 메서드가 있습니다. "save"함수는 파일에 쓰기 전에이 함수를 호출하기 만하면됩니다. 예를 들어

이 아직 그래서 여기에 대답하지 않은

def save(): 
    x_value = x.get() 
    y_value = y.get() 
    z_value = z.get() 
    ... 
+0

고마워요! 그래서 print (x)를 타이핑하면 입력 한 내용을 인쇄 할 것입니다. – user6842389

+0

@ user6842389 : 아니오,'x_value'를 인쇄해야합니다. 'x'는 위젯이 아닌 위젯의 값입니다. –

+0

좋아요,하지만 어떻게 함수에서 x_value에 액세스 할 수 있습니까? 함수 외부에서 액세스하려고합니다. – user6842389

0

당신이 요청하는 어떤 않는 코드의 전체 덩어리입니다.

from tkinter import * 

root = Tk() 
Label(root, text = "Childs First name").grid(row = 0, sticky = W) 
Label(root, text = "Childs Surname").grid(row = 1, sticky = W) 
Label(root, text = "Childs Year of Birth").grid(row = 2, sticky = W) 
Label(root, text = "Childs Month of Birth").grid(row = 3, sticky = W) 
Label(root, text = "Childs Day of Birth").grid(row = 4, sticky = W) 

Fname = Entry(root) 
Sname = Entry(root) 
x = Entry(root) 
y = Entry(root) 
z = Entry(root) 


Fname.grid(row = 0, column = 1) 
Sname.grid(row = 1, column = 1) 
x.grid(row = 3, column = 1) 
y.grid(row = 2, column = 1) 
z.grid(row = 4, column = 1) 

def getInput(): 

    a = Fname.get() 
    b = Sname.get() 
    c = x.get() 
    d = y.get() 
    e = z.get() 
    root.destroy() 

    global params 
    params = [a,b,c,d,e] 


Button(root, text = "submit", 
      command = getInput).grid(row = 5, sticky = W) 
mainloop() 

매우 우아하지는 않지만 사용자 버전에 대해 최소한의 변경 사항을 요구하는 것입니다. 당신의 입력 필드에

당신이 그것을 실행하는 경우, 입력 1, 2, 3, 45, 나는 추가 한 submit 버튼을 클릭하고 paramslist를 인쇄, 당신은 얻을 :

>>> params 
['1', '2', '4', '3', '5'] 

어떤 이유 때문에 제출 후 창을 닫지 않으려면 root.destroy()을 생략하고 거기에서 가져옵니다.

Button 매개 변수로 getInput에는 괄호가 없으므로이 줄을 실행할 때가 아니라 단추를 클릭 할 때만 호출됩니다.

마지막으로, '다음 코드 행으로 넘어가려면 어떻게해야합니까?'라는 마지막 질문을 통해 무엇을 의미하는지 확신 할 수 없습니다. 마지막으로 추가 한 mainloop() 건은 상자가 닫힐 때까지 나머지 코드가 실행되지 않도록합니다 (이벤트를 수집하는 루프를 시작하고 이벤트가 처리되는지 확인). 따라서 submit을 클릭하고 창을 닫으면 나머지 코드가 실행됩니다. mainloop() 행의 전후에 print('hi') 문을 추가하면이를 더 잘 이해할 수 있습니다. 전에 추가하면 문자열이 창 열기와 동시에 인쇄됩니다. 이후에 넣으면 창을 닫으면 인쇄됩니다. (mainloop()에 대한 추가 정보는 광범위한 토론을 herehere으로 보아주십시오)

관련 문제