【发布时间】:2017-11-28 10:41:19
【问题描述】:
我遇到了麻烦。我写了两个类,第一个是软件的主界面,第二个是登录。现在,在登录窗口中,我需要编写一个小的验证函数。我写了它,但在我验证这个函数调用主 gui 类并从Tk 继承之后我需要。我知道我的代码很糟糕,但我需要帮助。
class main_gui(Frame):
def __init__(self,master, self.username, self.password):
self.path = os.getcwd()
self.master = master
self.username = StringVar()
self.password = StringVar()
master.title("main menu")
master.geometry("800x600")
master.config(background="white")
master.resizable(width="false", height="false")
master.iconbitmap(self.path + r"/img/icon.ico")
self.mmenu = Menu(master)
self.menubar = Menu(self.mmenu, tearoff=0)
self.menubar.add_command(label="about", command=aboutme)
self.menubar.add_command(label="Exit!", command=master.destroy)
self.mmenu.add_cascade(label="menu", menu=self.menubar)
master.config(menu=self.mmenu)
class login(main_gui):
def __init__(self):
self.master.title("login")
self.master.geometry("350x250")
self.master.config(background="white")
self.master.resizable(width="false", height="false")
self.master.iconbitmap(self.path + r"/img/icon.ico")
self.user_label = Label(master, text="user name")
self.user_label.pack()
self.user_value = Entry(master, textvariable=self.username)
self.user_value.pack()
self.password_label = Label(master, text="password")
self.password_label.pack()
self.password_value = Entry(master, textvariable=self.password)
self.password_value.pack()
self.login = Button(master, text="login" )
self.login.pack()
def validation(self):
if self.username.get() == "admin" :
main_gui()
root = Tk()
hm = main_gui(root)
root.mainloop()
【问题讨论】:
-
在
validation内执行main_gui- 至于我的类login不应该从其他类继承。作为表单,您应该在main_gui类中使用类login作为任何其他小部件。 -
如果
login必须从main_gui继承,那么您必须在login.__init__()内使用super().__init__() -
顺便说一句:如果你在文件夹
A中有程序并且你在文件夹B中运行它,那么os.getcwd()会给你B但你可能会期望A得到图像。正确路径给出os.path.realpath(sys.argv[0])
标签: python python-3.x class tkinter