>source

그래서 tkinter의 자식 창에서 사용자의 입력이 필요한 프로그램을 작성하고 있습니다. 그리고 .get ()을 사용할 때마다 빈 문자열을 인쇄합니다. 온라인에서 많은 해결책을 읽었지만 문제에 대한 해결책을 찾을 수 없습니다. 다음은 기본 코드와 유사한 샘플 코드입니다.

from tkinter import *
t=Tk()
def getvals():
    print(st.get())
t.geometry("250x200")
st=StringVar()
def new():
    t1=Tk()
    t1.geometry("250x200")
    Entry(t1,textvariable=st).pack()
    Button(t1,text="Enter",command=getvals).pack()
    t1.mainloop()
Button(t,text="Open new window",command=new).pack()
t.mainloop()

파이썬 버전 3.9.0을 실행하고 있습니다. 또한 내 코드의 일부는 약간 쓰레기 (또는 전체 코드)가 될 수 있지만, 나는 이것에 대해 상당히 새롭습니다.

  • 답변 # 1

    위의 의견에서 말했듯이 tkinter가 두 개 이상 있으면 안됩니다. Tk 인스턴스가 동시에 실행됩니다. 새 창을 열려면 다음 인스턴스를 사용해야합니다. Toplevel 대신. 하나만 있어야합니다. mainloop .

    이를 수행하는 방법은 아래를 참조하십시오.

    from tkinter import *
    t=Tk()
    def getvals():
        print(st.get())
    t.geometry("250x200")
    st=StringVar()
    def new():
        t1=Toplevel()
        t1.geometry("250x200")
        Entry(t1,textvariable=st).pack()
        Button(t1,text="Enter",command=getvals).pack()
    Button(t,text="Open new window",command=new).pack()
    t.mainloop()
    
    

  • 이전 css - 상자에 원형 간격을 그립니다
  • 다음 java - Map 의 값으로 주문 된 사람의 자식 유지