从tkinter上的另一个方法替换新菜单

时间:2017-06-06 03:42:39

标签: python tkinter

首先对不起,如果标题不是最好解释我的问题。 我正在尝试进行某种登录,您点击“新帐户”按钮,然后消失在 init 方法上创建的登录按钮,并显示来自createaccount方法的内容。

我这样做了。我尝试做grid_forget()pack_forget(),但我还没能做到。 我正在使用python 3。 感谢

from tkinter import *
class Login:
    def __init__(self, ventana):
        ventana.title("Login - Python")
        ventana.geometry("800x600")
        Label(ventana, text="name: ").grid(column=0, row=0)
        Label(ventana, text="Password: ").grid(column=0, row=1)
        Button(ventana, text="Login").grid(column=0, row=2)
        Button(ventana, text="Create Account", command=self.createaccount).grid(column=0, row=3)
        Button(ventana, text="Exit").grid(column=0, row=4) 
    def createaccount(self):
        print("createaccount method executed")
        Label(ventana, text="Name: ").grid(column=2, row=0)
        Label(ventana, text="Password: ").grid(column=2, row=1)
        Label(ventana, text="Repeat Password: ").grid(column=2, row=2)
        Label(ventana, text="Email: ").grid(column=2, row=3)
        Label(ventana, text="Repeat E-mail: ").grid(column=2, row=4)

ventana = Tk()
objeto=Login(ventana)
ventana.mainloop()

1 个答案:

答案 0 :(得分:0)

如果您希望稍后在程序中使用小部件,则需要将它们存储在变量中。

def __init__(self, ventana):
    ventana.title("Login - Python")
    ventana.geometry("800x600")
    self.lblName = Label(ventana, text="name: ")
    self.lblPass = Label(ventana, text="Password: ")
    .....
    .....
    self.lblName.grid(column=0, row=0)
    self.lblPass.grid(column=0, row=1)
    .....
    .....

现在,您可以在代码中的任何位置使用这些小部件。

 def createaccount(self):
    self.lblName.grid_forget()
    self.lblPass.grid_forget() 
    #and so on...

请注意,创建窗口小部件并使用grid放置它们是分开的。