当我将标签添加到第二个窗口时,它不会添加到第二个窗口中,而是添加到了第一个窗口中。
class testing:
def __init__(self,root):
root.config(bg='orange')
root.geometry("500x500")
lbl = Label(text="WOW TEXT").pack()
class login:
def __init__(self,root):
root.config(bg='orange')
root.geometry("500x500")
self.login_form(root)
def login_onlick(self):
c.execute("SELECT * FROM Login WHERE Name = ? AND Password = ?",(self.e_name.get(),self.e_pass.get()))
self.right_login = c.fetchall()
if self.right_login:
print("Login Now")
self.top = testing(root=Tk())
else:
print("Wrong")
def login_form(self,root):
self.lg_form=Label(root, text="Login Form",font="Times 40",bg='red',width=50)
self.lg_form.pack()
self.lbl_name=Label(root, text="Enter Name",font="times 20",bg='orange')
self.lbl_name.pack()
self.e_name = Entry(root,width=50)
self.e_name.pack()
self.lbl_pass=Label(root, text="Enter Password",font="times 20",bg='orange')
self.lbl_pass.pack()
self.e_pass = Entry(root,width=50)
self.e_pass.pack()
self.btn_create = Button(root,text="Login", bg ='green',width=13,height=4,command= self.login_onlick)
self.btn_create.pack()
root = Tk()
login(root)
conn.commit()
root.mainloop()
您需要将Toplevel()
用作任何辅助窗口,tkinter在具有多个Tk()
调用时不能很好地工作。
我也试图固定您的间距以及一些功能名称,例如init
至__init__
。
from tkinter import *
class testing:
def __init__(self, root):
root.config(bg='orange')
root.geometry("500x500")
lbl = Label(text="WOW TEXT").pack()
class login:
def __init__(self, root):
self.login_form(root)
def login_onlick(self, root):
# Commented out for Testing
#c.execute("SELECT * FROM Login WHERE Name = ? AND Password = ?",(self.e_name.get(),self.e_pass.get()))
#self.right_login = c.fetchall()
self.right_login = True #TESTING
if self.right_login:
print("Login Now")
self.login_form(Toplevel(root))
else:
print("Wrong")
def login_form(self, root):
root.config(bg='orange')
root.geometry("500x500")
self.lg_form=Label(root, text="Login Form",font="Times 40",bg='red',width=50)
self.lg_form.pack()
self.lbl_name=Label(root, text="Enter Name",font="times 20",bg='orange')
self.lbl_name.pack()
self.e_name = Entry(root,width=50)
self.e_name.pack()
self.lbl_pass=Label(root, text="Enter Password",font="times 20",bg='orange')
self.lbl_pass.pack()
self.e_pass = Entry(root,width=50)
self.e_pass.pack()
self.btn_create = Button(root,text="Login", bg ='green',width=13,height=4,command=lambda:self.login_onlick(root))
self.btn_create.pack()
root = Tk()
login(root)
# Commented out for Testing
#conn.commit()
root.mainloop()
尽管如果已经创建了主窗口,则创建Tk()
实例而不是Toplevel()
实例是个坏主意,>不会引起问题,也不需要替换[C0 ]和Tk()
在这里。
[在Testing类中创建Label窗口小部件时,应指定其所属的窗口,否则,它将尝试自动查找它(并非总是选择正确的窗口)。只需将Toplevel()
类替换为:
Testing