2014-04-15 2 views
0

나는 내가하고있는 미니 프로그램을위한 "등록"의 일환으로 사람들이 이름을 입력 할 수있는 입력 상자를 만들려고 노력했지만 그 결과 입력 상자가 전혀 나타나지 않는다. 여기 두 번째 창에서 입력 상자를 만드는 방법은 무엇입니까?

나를 괴롭히는되는 코드의 섹션 :

def win2(self): 
    # this is the child window 
    board = Toplevel() 
    board.title("Sign up") 
    board.focus_set() 
    board.grab_set() 

    userVar = StringVar() 
    userVar.set('Username') 

    square1Label = Label(board,textvariable=userVar) 
    square1Label.grid(row=0, column=7) 

    userEnt=Entry(self) 
    userEnt.grid(row=1, column=7) 

    s2Var = StringVar() 
    s2Var.set('First Name') 
    square2Label = Label(board,textvariable=s2Var) 
    square2Label.grid(row=1, column=7) 

    leaveButton = Button(board, text="Quit", command=board.destroy) 
    leaveButton.grid(row=1, column=1, sticky='nw') 
    board.wait_window(board) 

을 그리고 여기에 전체의 코딩, 마이너스는 Tkinter의 수입과 돌이입니다 :

class Application(Frame): 
    """GUI Application for making Baakibook""" 
    def __init__(self, parent): 
     """Initialize the frame""" 
     Frame.__init__(self, parent, bg="light blue") 
     self.win1() 

    # different windows 
    def win1(self): 
     # this is the main/root window 
     signupButton = Button(root, text="Sign up", command=self.win2) 
     signupButton.grid(row=9, column=7) 
     loginButton = Button(root, text="Log in", command=self.win3) 
     loginButton.grid(row=10, column=7) 
     leaveButton = Button(root, text="Quit", command=root.destroy) 
     leaveButton.grid(row=1, column=1, sticky='nw') 
     b1Var = StringVar() 
     b2Var = StringVar() 

     b1Var.set('b1') 
     b2Var.set('b2') 
     box1Label = Label(root,textvariable=b1Var,width=12) 
     box1Label.grid(row=3, column=2) 
     box2Label = Label(root,textvariable=b2Var,width=12) 
     box2Label.grid(row=3, column=3) 
     root.mainloop() 


    def win2(self): 
     # this is the child window 
     board = Toplevel() 
     board.title("Sign up") 
     board.focus_set() 
     board.grab_set() 

     userVar = StringVar() 
     userVar.set('Username') 

     square1Label = Label(board,textvariable=userVar) 
     square1Label.grid(row=0, column=7) 

     userEnt=Entry(self) 
     userEnt.grid(row=1, column=7) 

     s2Var = StringVar() 
     s2Var.set('First Name') 
     square2Label = Label(board,textvariable=s2Var) 
     square2Label.grid(row=1, column=7) 

     leaveButton = Button(board, text="Quit", command=board.destroy) 
     leaveButton.grid(row=1, column=1, sticky='nw') 
     board.wait_window(board) 

    def win3(self): 
     # this is the child window 
     board = Toplevel() 
     board.title("Login User") 
     board.focus_set() 
     board.grab_set() 

     s1Var = StringVar() 
     s2Var = StringVar() 
     s1Var.set("s1") 
     s2Var.set("s2") 

     square1Label = Label(board,textvariable=s1Var) 
     square1Label.grid(row=0, column=7) 
     square2Label = Label(board,textvariable=s2Var) 
     square2Label.grid(row=0, column=6) 

     leaveButton = Button(board, text="Quit", command=board.destroy) 
     leaveButton.grid(row=1, column=1, sticky='nw') 
     board.wait_window(board) 
+0

'columnconfigure '를 호출해야합니까? – dilbert

답변

1

첫 번째 인수 위젯을 만드는 데 사용하는 것은 당신이 할당하고자하는 부모입니다. 그래서,이 라인은 :

userEnt=Entry(self) 
userEnt.grid(row=1, column=7) 

__init__에서 만든 Frame에서 Entry 위젯을 만든다. 당신은의 Toplevel에 나타납니다 당신이 그 방법에서 만든 다른 위젯, 즉처럼 만들려면 :

userEnt=Entry(board) 
userEnt.grid(row=1, column=7) 

또한, Toplevel에서 그리드 지금은 이해가되지 않고 몇 당신의 위젯은 변경할 때까지 겹쳐서 나타납니다.

관련 문제