为什么按钮移动到当前窗口?

时间:2014-02-10 12:11:31

标签: python tkinter

我使用tkinter函数创建一个新窗口,它工作正常 当我从这个窗口链接到另一个窗口时,按钮移动到第一个窗口。我不明白为什么会这样。

以下是第一个窗口的代码

    import tkinter
    window = tkinter.Tk()
    window.title ("Login")
    window.geometry ("300x150") 
    username = "Gurdip"
    password = "1234"
    def login():
         if txtUser.get() == username and txtPass.get() == password:
         import NewWindow
    lblUser = tkinter.Label(window, text="Username:")
    lblUser.pack()
    txtUser = tkinter.Entry(window)
    txtUser.pack()
    lblPass = tkinter.Label(window, text="Password:")
    lblPass.pack()
    txtPass = tkinter.Entry(window)
    txtPass.pack()
    btnenter = tkinter.Button(window, text="Enter", command=login)
    btnenter.pack()

第二个窗口

    import tkinter
    window = tkinter.Tk()
    window.title ("The Royal Liberty School")
    window.geometry ("300x150")
    def webpage():
         import webbrowser
         webbrowser.open("http://www.royalliberty.org.uk/")
    lblRlib = tkinter.Label(window, text="Welcome to the Royal Liberty School\n\nClick the link to go to our website")
    lblRlib.pack()
    def button():
         webbutton = tkinter.Button(text ="Royal Liberty School", command = webpage)
         webbutton.pack()
    button()

2 个答案:

答案 0 :(得分:0)

我的猜测是你报告“皇家自由学校”按钮出现在错误的窗口上,而不是实际移动。我从来没有听说过按钮移动过。

如果猜测正确,可能是因为你没有给它一个明确的父,所以它默认为根窗口。

如果所有代码都属于单个程序,则还有其他问题。您应始终只创建Tk的单个实例。如果您需要多个窗口,请创建Toplevel的实例。

答案 1 :(得分:0)

您通过名称​​窗口调用两者。这意味着屏幕上有两个窗口都被名称窗口所占据。使用tkinter的Toplevel更常规如下

NewWindow = Toplevel(window)

然后,你要放在这个NewWindow上的任何物品,只需在窗口的地方使用它

MyButton = Button(NewWindow, text=hi)

正如另一个答案所说,在一个程序中使用 Tk()是不正确的,所以你必须使用Toplevel。