我使用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()
答案 0 :(得分:0)
我的猜测是你报告“皇家自由学校”按钮出现在错误的窗口上,而不是实际移动。我从来没有听说过按钮移动过。
如果猜测正确,可能是因为你没有给它一个明确的父,所以它默认为根窗口。
如果所有代码都属于单个程序,则还有其他问题。您应始终只创建Tk
的单个实例。如果您需要多个窗口,请创建Toplevel
的实例。
答案 1 :(得分:0)
您通过名称窗口调用两者。这意味着屏幕上有两个窗口都被名称窗口所占据。使用tkinter的Toplevel更常规如下
NewWindow = Toplevel(window)
然后,你要放在这个NewWindow上的任何物品,只需在窗口的地方使用它
MyButton = Button(NewWindow, text=hi)
正如另一个答案所说,在一个程序中使用 Tk()是不正确的,所以你必须使用Toplevel。