Python 如何让tkinter框显示在另一个tkinter窗口中?

Python 如何让tkinter框显示在另一个tkinter窗口中?,python,python-3.x,button,tkinter,messagebox,Python,Python 3.x,Button,Tkinter,Messagebox,我试图为密码存储和哈希系统制作一个GUI,但我遇到了一个障碍。我有两个按钮,一个用于登录,一个用于创建帐户。单击登录按钮时,将打开一个新的tkinter窗口,其中显示登录页面。然而,登录按钮应该显示在第二页上,但它没有,我不知道为什么。以下是完整系统的代码: import tkinter from tkinter import* username = ("Tom") password = ("test") usernameguess1 = ("") passwordguess1 = ("")

我试图为密码存储和哈希系统制作一个GUI,但我遇到了一个障碍。我有两个按钮,一个用于登录,一个用于创建帐户。单击登录按钮时,将打开一个新的tkinter窗口,其中显示登录页面。然而,登录按钮应该显示在第二页上,但它没有,我不知道为什么。以下是完整系统的代码:

import tkinter
from tkinter import*

username = ("Tom")
password = ("test") 
usernameguess1 = ("")
passwordguess1 = ("")


def trylogin():
   print ("Trying to login...")
   if usernameguess.get() == username:
       print ("Complete sucsessfull!")
       messagebox.showinfo("Sucess ", "Successfully logged in.")
   else:
       print ("Error: (Incorrect value entered)")
       messagebox.showinfo("Error", "Sorry, but your username or password is incorrect. Try again")

def loginpage():
    #Gui Formatting
    window = tkinter.Tk()
    window.resizable(width=FALSE, height=FALSE)
    window.title("HasherTest_V0.1 Login")
    window.geometry("300x150")

    #Username and password boxes
    usernametext = tkinter.Label(window, text="Username:")
    usernameguess = tkinter.Entry(window)
    passwordtext = tkinter.Label(window, text="Password:")
    passwordguess = tkinter.Entry(window, show="*")

    usernameguess1 = usernameguess

    #login button

    attemptlogin = tkinter.Button(text="Login", command=trylogin)

    usernametext.pack()
    usernameguess.pack()
    passwordtext.pack()
    passwordguess.pack()
    attemptlogin.pack()
    window.mainloop()


#Gui Formatting (again)
window = tkinter.Tk() 
window.resizable(width=FALSE, height=FALSE)
window.title("HasherTest_V0.1")
window.geometry("300x150")

loginbutton = tkinter.Button(text="Login", command=loginpage)
loginbutton.pack()
这是第二个窗口的代码。出于某种原因,我还必须导入tkinter消息框,否则我的空闲错误就会被清除

import tkinter
from tkinter import *
from tkinter import messagebox

username = ("Tom")
password = ("test") 
usernameguess1 = ("")
passwordguess1 = ("")


def trylogin():
   print ("Trying to login...")
   if usernameguess.get() == username:
       print ("Complete sucsessfull!")
       messagebox.showinfo("Sucess ", "Successfully logged in.")
   else:
       print ("Error: (Incorrect value entered)")
       messagebox.showinfo("Error", "Sorry, but your username or password is incorrect. Try again")

#Gui Formatting
window = tkinter.Tk() 
window.resizable(width=FALSE, height=FALSE)
window.title("HasherTest_V0.1 Login")
window.geometry("300x150")


#Username and password boxes
usernametext = tkinter.Label(window, text="Username:")
usernameguess = tkinter.Entry(window)
passwordtext = tkinter.Label(window, text="Password:")
passwordguess = tkinter.Entry(window, show="*")

usernameguess1 = usernameguess

#login button
attemptlogin = tkinter.Button(text="Login", command=trylogin)

usernametext.pack()
usernameguess.pack()
passwordtext.pack()
passwordguess.pack()
attemptlogin.pack()
window.mainloop()

谢谢你的帮助

这里。我完全重新编写了您的代码,并且可以正常工作(据我所知)

我完全删除了
textvariable
StringVar()
。不需要它们。代码不起作用的原因是您检查了文件“string”的名称,但需要添加“.txt”以获得完全相等

代码:

导入tkinter
从tkinter进口*
从tkinter导入消息框
用户名=(“汤姆”)
密码=(“测试”)
usernameguess1=(“”)
passwordguess1=(“”)
def loginpage():
#图形用户界面格式
root=tkinter.Toplevel()
#根。可调整大小(宽度=假,高度=假)
root.title(“HasherTest_V0.1登录”)
根几何(“300x150”)
#用户名和密码框
usernametext=tkinter.Label(root,text=“Username:”)
usernameguess=tkinter.Entry(根)
passwordtext=tkinter.Label(root,text=“Password:”)
passwordguess=tkinter.Entry(根,show=“*”)
usernameguess 1=usernameguess
def trylogin():
打印(“尝试登录…”)
如果usernameguess.get()==用户名:
打印(“完全成功!”)
messagebox.showinfo(“成功”,“成功登录”)
其他:
打印(“错误:(输入的值不正确)”)
messagebox.showinfo(“错误”,“对不起,您的用户名或密码不正确。请重试”)
#登录按钮
attemptlogin=tkinter.Button(root,text=“Login”,command=trylogin)
usernametext.pack()
usernameguess.pack()
passwordtext.pack()
passwordguess.pack()
attemptlogin.pack()
window.mainloop()
#Gui格式化(再次)
window=tkinter.Tk()
窗口。可调整大小(宽度=假,高度=假)
窗口标题(“HasherTest_V0.1”)
窗口几何(“300x150”)
loginbutton=tkinter.Button(窗口,text=“Login”,command=loginpage)
loginbutton.pack()
window.mainloop()
正如@stovfl所提到的,我还冒昧地添加了
topflevel()
实例,而不是多次使用
Tk()


希望这有帮助

我在您的代码中看到了对
Tk()
的多次调用,并停止查看它;在这种情况下,任何事情都不可能正常工作。您必须使用
Toplevel()
来创建其他窗口。@jasonharper嗯,好的,我是tkinter的新手,但是您能告诉我怎么做吗?也许可以复制和编辑我的代码来告诉我如何操作?请阅读并@Tf0R24 No Prob^^乐意帮助。如果您添加对重要更改的描述,这个答案会更好。否则,我们必须逐行和逐字符比较您的代码,以查看您更改了什么。