我有一个问题,如何正确地将我的班级彼此连接。 在第一个窗口中,我有一个主类,在提交一个新窗口后,用户必须进行下一步,在该窗口中用户必须输入某些信息。 您可以看一下我的代码,“ MyForm”类是主类,而“ popup”类应在以下窗口中。但是我不确定我是否正确链接了它。它正在工作,但是方式很奇怪。因此,如何改进这一点,以后再也不会遇到一些更严重的项目。 代码:
from tkinter import Tk, Label, Entry, Button, W, Toplevel
from tkinter import messagebox
class MyForm:
def thanx(self):
if any((len(self.e.get().strip()) == 0, len(self.e2.get().strip()) == 0, len(self.e2.get().strip()) == 0)):
messagebox.showerror("Error", "Please enter affordable infos")
self.boo = False
else:
messagebox.showinfo("Submition done", "Thank you")
self.boo = True
def callback(self):
#print("Name: %s\nPassword: %s\nEmail: %s" % (self.e.get(), self.e2.get(),self.e3.get()))
if self.boo:
f = open("PrivatData.txt", "w+")
f.write("Name: %s\nPassword: %s\nEmail: %s" % (self.e.get(), self.e2.get(),self.e3.get()))
def popup(self):
self.root.quit()
PopUp()
def __init__(self):
self.root = Tk()
self.root.title("Your privat details")
Label(self.root, text="Your Name").grid(row = 0, padx = 12, pady=5)
Label(self.root, text="Password").grid(row=1, padx=12, pady=5)
Label(self.root, text="Email").grid(row=2, padx=12, pady=5)
self.e = Entry(self.root)
self.e2 = Entry(self.root)
self.e3= Entry(self.root)
self.e.grid(row=0,column=1,columnspan=2)
self.e2.grid(row=1, column=1, columnspan=2)
self.e3.grid(row=2, column=1, columnspan=2)
self.e.focus_set()
self.show= Button(self.root, text="Submit", command=lambda:[self.thanx(),self.callback(),self.popup()])
self.quit = Button(self.root,text="Quit", command = self.root.quit)
self.show.grid(row=3, column=1, pady=4)
self.quit.grid(row=3, column=2, sticky = W, pady=4)
self.root.geometry("230x140")
self.root.configure(background= "#65499c")
self.root.mainloop()
class PopUp():
def __init__(self):
super().__init__()
self.pop = Tk()
self.pop.title("Next Step")
self.pop.geometry("500x500")
self.pop.mainloop()
if __name__ == "__main__":
app= MyForm()
如您所见,单击“提交”按钮后,将调用一个调用PopUp类的函数。但这显然不是正确的方法。有什么改进吗?