【发布时间】:2016-08-29 22:30:03
【问题描述】:
我有一个登录窗口。我想在授予用户访问权限时关闭该登录窗口,然后打开一个新窗口。我进行了很多搜索以找到解决这个简单问题的方法,但不明白如何做到这一点。我试过self.destroy(),但它关闭了整个程序。
这里是代码
#!/usr/bin/python
from tkinter import *
from tkinter import ttk
class Login(Tk):
def __init__(self):
super().__init__()
self.uname_var = StringVar()
self.pword_var = StringVar()
self.init_widgets()
def init_widgets(self):
# frame
mainframe = ttk.Frame(self, padding='5 5')
mainframe.grid(row=0, column=0, sticky=(N, E, S, W))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
# label
ttk.Label(mainframe, text='Username').grid(row=0, column=0, sticky=W)
ttk.Label(mainframe, text='Password').grid(row=1, column=0, sticky=W)
# entry
uname_entry = ttk.Entry(mainframe, width=20, textvariable=self.uname_var)
uname_entry.grid(row=0, column=1, sticky=(E, W))
pword_entry = ttk.Entry(mainframe, width=20, textvariable=self.pword_var)
pword_entry.grid(row=1, column=1, sticky=(E, W))
# button
ttk.Button(mainframe, text='Sign in', command=self.check_login).grid(row=2, column=1, sticky=E)
for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)
uname_entry.focus()
self.bind('<Return>', self.check_login)
def check_login(self, *args):
uname = self.uname_var.get()
pword = self.pword_var.get()
if uname == 'admin' and pword == 'admin':
print("Access Granted")
new = MainForm()
new.title("Main Window")
#self.destory()
# HERE I WANT TO CLOSE THIS WINDOW
else:
print("Access Denied")
class MainForm(Toplevel):
def __init__(self):
super().__init__()
self.init_widgets()
def init_widgets(self):
mainframe = ttk.Frame(self, padding='5 5')
mainframe.grid(column=0, row=0, sticky=(N, E, S, W))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
ttk.Button(mainframe, text='Click me').grid(column=0, row=0, sticky=(N, W))
def main():
root = Login()
root.title("Login")
root.mainloop()
if __name__ == '__main__': main()
【问题讨论】:
-
您是否真的需要销毁一个窗口并打开另一个窗口,或者只需删除登录窗口中的所有内容并用其他内容替换它就可以了吗?
-
@BryanOakley 没关系如果更换框架或小部件是做我想做的事情的唯一方法
-
这不是唯一的方式,它可以说是最好的方式。
标签: python python-3.x user-interface tkinter