2014-04-15 37 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) 

使得在FrameEntry部件您在__init__創建。如果你想讓它出現在Toplevel,像你這種方法提出的其他部件,即創建:

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

此外,您在Toplevel電網就沒有意義了,現在一對夫婦的你小部件將顯示堆疊,直到你改變它。

相關問題