如果我给定的条件为真,我该如何打开 window?
How can I open a window if my given conditions are true?
我有一个类似登录系统的东西。因此,如果用户使用正确的用户名和密码登录,他将被传递到我的项目 (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, rely=0.5, relwidth=0.3, relheight=0.07,
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, relwidth=0.3,
relheight=0.07, anchor="e")
frame_passwort_text = tk.Frame(root)
frame_passwort_text.place(relx=0.55, rely=0.4, relwidth=0.3,
relheight=0.07, 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, relwidth=0.3, relheight=0.07,
anchor="e")
# PASSWORT ENTRY
entry_passwort = tk.Entry(root)
entry_passwort.place(relx=0.55, rely=0.2, relwidth=0.3, relheight=0.07,
anchor="w")
# PASSWORT FRAME
frame_passwort = tk.Frame(root)
frame_passwort.place(relx=0.55, rely=0.1, relwidth=0.3, relheight=0.07,
anchor="w")
# EMAIL FRAME
frame_mail = tk.Frame(root)
frame_mail.place(relx=0.45, rely=0.1, relwidth=0.3, relheight=0.07,
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, rely=0.5, relwidth=0.3, relheight=0.07,
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, relwidth=0.3,
relheight=0.07, anchor="e")
frame_passwort_text = tk.Frame(root)
frame_passwort_text.place(relx=0.55, rely=0.4, relwidth=0.3,
relheight=0.07, 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。
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, relwidth=0.3, relheight=0.07,
anchor="e")
# PASSWORT ENTRY
entry_passwort = tk.Entry(root)
entry_passwort.place(relx=0.55, rely=0.2, relwidth=0.3, relheight=0.07,
anchor="w")
# PASSWORT FRAME
frame_passwort = tk.Frame(root)
frame_passwort.place(relx=0.55, rely=0.1, relwidth=0.3, relheight=0.07,
anchor="w")
# EMAIL FRAME
frame_mail = tk.Frame(root)
frame_mail.place(relx=0.45, rely=0.1, relwidth=0.3, relheight=0.07,
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)所以这就是我理解和写的。
我有一个类似登录系统的东西。因此,如果用户使用正确的用户名和密码登录,他将被传递到我的项目 (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, rely=0.5, relwidth=0.3, relheight=0.07,
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, relwidth=0.3,
relheight=0.07, anchor="e")
frame_passwort_text = tk.Frame(root)
frame_passwort_text.place(relx=0.55, rely=0.4, relwidth=0.3,
relheight=0.07, 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, relwidth=0.3, relheight=0.07,
anchor="e")
# PASSWORT ENTRY
entry_passwort = tk.Entry(root)
entry_passwort.place(relx=0.55, rely=0.2, relwidth=0.3, relheight=0.07,
anchor="w")
# PASSWORT FRAME
frame_passwort = tk.Frame(root)
frame_passwort.place(relx=0.55, rely=0.1, relwidth=0.3, relheight=0.07,
anchor="w")
# EMAIL FRAME
frame_mail = tk.Frame(root)
frame_mail.place(relx=0.45, rely=0.1, relwidth=0.3, relheight=0.07,
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, rely=0.5, relwidth=0.3, relheight=0.07,
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, relwidth=0.3,
relheight=0.07, anchor="e")
frame_passwort_text = tk.Frame(root)
frame_passwort_text.place(relx=0.55, rely=0.4, relwidth=0.3,
relheight=0.07, 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。
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, relwidth=0.3, relheight=0.07,
anchor="e")
# PASSWORT ENTRY
entry_passwort = tk.Entry(root)
entry_passwort.place(relx=0.55, rely=0.2, relwidth=0.3, relheight=0.07,
anchor="w")
# PASSWORT FRAME
frame_passwort = tk.Frame(root)
frame_passwort.place(relx=0.55, rely=0.1, relwidth=0.3, relheight=0.07,
anchor="w")
# EMAIL FRAME
frame_mail = tk.Frame(root)
frame_mail.place(relx=0.45, rely=0.1, relwidth=0.3, relheight=0.07,
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)所以这就是我理解和写的。