如何使用tkinter在python中正确地将类彼此连接?

时间:2018-09-30 16:54:49

标签: python tkinter

我有一个问题,如何正确地将我的班级彼此连接。 在第一个窗口中,我有一个主类,在提交一个新窗口后,用户必须进行下一步,在该窗口中用户必须输入某些信息。 您可以看一下我的代码,“ 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类的函数。但这显然不是正确的方法。有什么改进吗?

0 个答案:

没有答案