如果我的给定条件为真,如何打开窗口?

问题描述

我有一个类似登录系统的东西。因此,如果用户使用正确的用户名和密码登录,则会将其传递给我的项目(main.py)。我使用tkinter并按顺序拥有两个文件一个是日志记录系统(logging.py),另一个是我的项目(main.py)。所以我想在用户名密码正确时打开我的主窗口。 (就像您在main.py代码中看到的那样,它是电子邮件存储空间)

我尝试过:

import tkinter as tk
import main

def login():
    username = entry_username.get()
    passwort = entry_passwort.get()

    if username == "username" and passwort == "passwort123":
        main_window = tk.Toplevel(main) 
        main_window.mainloop()

但是它不起作用,我不知道如果登录正确无误怎么打开我的主电话?

完成logging.py中的代码

import tkinter as tk
import main


def login():
  username = entry_username.get()
  passwort = entry_passwort.get()

if username == "username" and passwort == "passwort123":
    main_window = tk.Toplevel(main)
    main_window.mainloop()



root = tk.Tk()


canvas = tk.Canvas(height=500,width=500)
canvas.pack()

# FRAME 
frame_username = tk.Frame(root,bg="red")
frame_username.place(relx=0.45,rely=0.5,relwidth=0.3,relheight=0.07,anchor="e")

frame_passwort = tk.Frame(root,bg="yellow")
frame_passwort.place(relx=0.55,anchor="w")

frame_button = tk.Frame(root,bg="green")
frame_button.place(relx=0.44,rely=0.7,relwidth=0.13,relheight=0.11)


#  prints above the entry form mail " mail " and from passwort " password"
frame_username_text = tk.Frame(root)
frame_username_text.place(relx=0.45,rely=0.4,anchor="e")

frame_passwort_text = tk.Frame(root)
frame_passwort_text.place(relx=0.55,anchor="w")

# ENTRY USERNAME / PASSWORT
entry_username = tk.Entry(frame_username)
entry_username.place(relwidth=1,relheight=1)

entry_passwort = tk.Entry(frame_passwort)
entry_passwort.place(relwidth=1,relheight=1)

#Button
login_button = tk.Button(frame_button,text = "sign in",font=    
(8),bg="#33cc33",fg="white",command=login)
login_button.place(relwidth=1,relheight=1)



#just assigns mail to mail and passwort to password

# EMAIL LABEL
label_username = tk.Label(frame_username_text,text = "Username",font=(10) 
)
label_username.place(relwidth=1,relheight=1)

# PASSWORT LABEL
label_passwort = tk.Label(frame_passwort_text,text = "Passwort",font= 
(10))
label_passwort.place(relwidth=1,relheight=1)

if __name__ == "__main__":
   pass


root.mainloop()

这是我来自main.py的代码

import tkinter as tk


def save_info():
    mail = entry_mail.get()
    passwort = entry_passwort.get()
    entry_mail.delete(0,tk.END)
    entry_passwort.delete(0,tk.END)

label_list["text"]=str(mail)+" | "+str(password)



root = tk.Tk()

canvas = tk.Canvas(height=500,width=500)
canvas.pack()

# EMAIL ENTRY
entry_mail = tk.Entry(root)
# entry_mail.insert(0,"Type your Mail...")
entry_mail.place(relx=0.45,rely=0.2,anchor="e")

# PASSWORT ENTRY
entry_passwort = tk.Entry(root)
entry_passwort.place(relx=0.55,anchor="w")


# PASSWORT FRAME
frame_passwort = tk.Frame(root)
frame_passwort.place(relx=0.55,rely=0.1,anchor="w")

# EMAIL FRAME
frame_mail = tk.Frame(root)
frame_mail.place(relx=0.45,anchor="e")

# BUTTON FRAME
frame_button = tk.Frame(root,bg="yellow")
frame_button.place(relx=0.88,rely=0.165,relwidth=0.1,relheight=0.07)

# LIST FRAME
frame_list = tk.Frame(root,bg="gray",bd=10)
frame_list.place(relx=0.5,rely=0.3,relwidth=0.75,relheight=0.5,anchor="n")


# EMAIL LABEL
label_mail = tk.Label(frame_mail,text = "E-Mail")
label_mail.place(relwidth=1,relheight=1)

# PASSWORT LABEL
label_passwort = tk.Label(frame_passwort,text = "Passwort")
label_passwort.place(relwidth=1,relheight=1)

# LIST LABEL
label_list = tk.Label(frame_list,anchor="nw",justify="left" )
label_list.place(relwidth=1,relheight=1)


# SAVE BUTTON
button_save = tk.Button(frame_button,text="save",command=save_info)
button_save.place(relwidth=1,relheight=1)

if __name__ == "__main__":
    pass




root.mainloop()

解决方法

我对您的代码进行了几处更改,并且可以正常运行(终端中只有一些红线,但这没关系,因为它实际上没有任何意义)。参见:

Login.py代码:

import tkinter as tk

username = ""
passwort = ""

def login():
  username = entry_username.get()
  passwort = entry_passwort.get()

  if username == "username" and passwort == "passwort123":
    import main
    toplevel = tk.Toplevel(main)
  
root = tk.Tk()

canvas = tk.Canvas(height=500,width=500)
canvas.pack()

# FRAME 
frame_username = tk.Frame(root,bg="red")
frame_username.place(relx=0.45,rely=0.5,relwidth=0.3,relheight=0.07,anchor="e")

frame_passwort = tk.Frame(root,bg="yellow")
frame_passwort.place(relx=0.55,anchor="w")

frame_button = tk.Frame(root,bg="green")
frame_button.place(relx=0.44,rely=0.7,relwidth=0.13,relheight=0.11)

#  prints above the entry form mail " mail " and from passwort " password"
frame_username_text = tk.Frame(root)
frame_username_text.place(relx=0.45,rely=0.4,anchor="e")

frame_passwort_text = tk.Frame(root)
frame_passwort_text.place(relx=0.55,anchor="w")

# ENTRY USERNAME / PASSWORT
entry_username = tk.Entry(frame_username)
entry_username.place(relwidth=1,relheight=1)

entry_passwort = tk.Entry(frame_passwort)
entry_passwort.place(relwidth=1,relheight=1)

#Button
login_button = tk.Button(frame_button,text = "sign in",font=    
(8),bg="#33cc33",fg="white",command=login)
login_button.place(relwidth=1,relheight=1)

#just assigns mail to mail and passwort to password

# EMAIL LABEL
label_username = tk.Label(frame_username_text,text = "Username",font=(10) 
)
label_username.place(relwidth=1,relheight=1)

# PASSWORT LABEL
label_passwort = tk.Label(frame_passwort_text,text = "Passwort",font= 
(10))
label_passwort.place(relwidth=1,relheight=1)

if __name__ == "__main__":
   pass

root.mainloop()

问题出在TYPOS,是的,您应该在条件出现后导入main。

main.py代码:

import tkinter as tk

mail = ""
password = ""
    
def save_info():
    mail = entry_mail.get()
    passwort = entry_passwort.get()
    entry_mail.delete(0,tk.END)
    entry_passwort.delete(0,tk.END)

#label_list = ["text"]=str(mail)+" | "+str(password)

root = tk.Tk()

canvas = tk.Canvas(height=500,width=500)
canvas.pack()

# EMAIL ENTRY
entry_mail = tk.Entry(root)
# entry_mail.insert(0,"Type your Mail...")
entry_mail.place(relx=0.45,rely=0.2,anchor="e")

# PASSWORT ENTRY
entry_passwort = tk.Entry(root)
entry_passwort.place(relx=0.55,anchor="w")

# PASSWORT FRAME
frame_passwort = tk.Frame(root)
frame_passwort.place(relx=0.55,rely=0.1,anchor="w")

# EMAIL FRAME
frame_mail = tk.Frame(root)
frame_mail.place(relx=0.45,anchor="e")

# BUTTON FRAME
frame_button = tk.Frame(root,bg="yellow")
frame_button.place(relx=0.88,rely=0.165,relwidth=0.1,relheight=0.07)

# LIST FRAME
frame_list = tk.Frame(root,bg="gray",bd=10)
frame_list.place(relx=0.5,rely=0.3,relwidth=0.75,relheight=0.5,anchor="n")

# EMAIL LABEL
label_mail = tk.Label(frame_mail,text = "E-Mail")
label_mail.place(relwidth=1,relheight=1)

# PASSWORT LABEL
label_passwort = tk.Label(frame_passwort,text = "Passwort")
label_passwort.place(relwidth=1,relheight=1)

# LIST LABEL
label_list = tk.Label(frame_list,anchor="nw",justify="left" )
label_list.place(relwidth=1,relheight=1)

# SAVE BUTTON
button_save = tk.Button(frame_button,text="save",command=save_info)
button_save.place(relwidth=1,relheight=1)

root.mainloop()

是的.....由于您的代码不清楚(imo),可能还会出现更多错误,所以这就是我所理解和编写的。