如何解决如果我的给定条件为真,如何打开窗口?
我有一个类似登录系统的东西。因此,如果用户使用正确的用户名和密码登录,则会将其传递给我的项目(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),可能还会出现更多错误,所以这就是我所理解和编写的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。