当用户名是hello,密码是world时,为什么框架没有被隐藏(忘记)

我try 过.Destroy()它只会删除按钮

这是我的代码:


import tkinter as tk
from tkinter import colorchooser, messagebox


class ExpenseTracker(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("Expense Tracker")
        self.geometry("700x700")
        self.minsize(700, 700)
        self.login = Login(self)
        self.mainloop()


class Login(tk.Frame):
    def __init__(self, parent):
        self.username = tk.StringVar()
        self.password = tk.StringVar()
        super().__init__(parent)
        tk.Label(text="Enter Username:", borderwidth=0).place(relx=0.5, rely=0.36, anchor=tk.CENTER)
        tk.Label(text="Enter Password:", borderwidth=0).place(relx=0.5, rely=0.46, anchor=tk.CENTER)
        self.change_colour = tk.Button(text="Background Colour", command=self.change_colour)
        self.change_colour.place(relx=0.9, rely=0.1, anchor=tk.CENTER)
        self.exit_button = tk.Button(text="Exit", command=exit)
        self.exit_button.place(relx=0.9, rely=0.05, anchor=tk.CENTER)
        self.username_entry = tk.Entry(textvariable=self.username)
        self.username_entry.place(relx=0.5, rely=0.4, anchor=tk.CENTER)
        self.password_entry = tk.Entry(textvariable=self.password)
        self.password_entry.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
        self.login_box = tk.Button(self, text="Login", command=self.get_details)
        self.login_box.place(relx=0.5, rely=0.55, anchor=tk.CENTER)
        self.pack(expand=True, fill=tk.BOTH)

    def change_colour(self):
        color = colorchooser.askcolor()[1]
        self.configure(bg=color)

    def get_details(self):
        __username = self.username.get()
        __password = self.password.get()
        if __username == "hello" and __password == "world":
            self.grid_forget()


ExpenseTracker()

有人能帮忙吗,这个功能似乎只是指按钮,而不是整个框架?

推荐答案

首先,您需要通过self作为所有组件的parent.并且您需要将self.grid_forget更改为self.pack_forget().因为您使用pack来包装您的组件.

这是您修改后的代码.

import tkinter as tk
from tkinter import colorchooser, messagebox


class ExpenseTracker(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("Expense Tracker")
        self.geometry("700x700")
        self.minsize(700, 700)
        self.login = Login(self)
        self.mainloop()


class Login(tk.Frame):
    def __init__(self, parent):
        self.username = tk.StringVar()
        self.password = tk.StringVar()
        super().__init__(parent)
        tk.Label(self,text="Enter Username:", borderwidth=0).place(relx=0.5, rely=0.36, anchor=tk.CENTER)
        tk.Label(self,text="Enter Password:", borderwidth=0).place(relx=0.5, rely=0.46, anchor=tk.CENTER)
        self.change_colour = tk.Button(self,text="Background Colour", command=self.change_colour)
        self.change_colour.place(relx=0.9, rely=0.1, anchor=tk.CENTER)
        self.exit_button = tk.Button(self,text="Exit", command=exit)
        self.exit_button.place(relx=0.9, rely=0.05, anchor=tk.CENTER)
        self.username_entry = tk.Entry(self,textvariable=self.username)
        self.username_entry.place(relx=0.5, rely=0.4, anchor=tk.CENTER)
        self.password_entry = tk.Entry(self,textvariable=self.password)
        self.password_entry.place(relx=0.5, rely=0.5, anchor=tk.CENTER)
        self.login_box = tk.Button(self, text="Login", command=self.get_details)
        self.login_box.place(relx=0.5, rely=0.55, anchor=tk.CENTER)
        self.pack(expand=True, fill=tk.BOTH)

    def change_colour(self):
        color = colorchooser.askcolor()[1]
        self.configure(bg=color)

    def get_details(self):
        __username = self.username.get()
        __password = self.password.get()
        if __username == "hello" and __password == "world":
            self.pack_forget()


ExpenseTracker()

Python相关问答推荐

Pydantic 2.7.0模型接受字符串日期时间或无

韦尔福德方差与Numpy方差不同

为什么tkinter框架没有被隐藏?

根据在同一数据框中的查找向数据框添加值

可变参数数量的重载类型(args或kwargs)

如何过滤包含2个指定子字符串的收件箱列名?

对所有子图应用相同的轴格式

Pandas:将多级列名改为一级

SQLAlchemy Like ALL ORM analog

如何在Polars中从列表中的所有 struct 中 Select 字段?

将输入聚合到统一词典中

如何在图中标记平均点?

如何在Python中使用另一个数据框更改列值(列表)

基于形状而非距离的两个numpy数组相似性

Matplotlib中的字体权重

并行编程:同步进程

什么是一种快速而优雅的方式来转换一个包含一串重复的列,而不对同一个值多次运行转换,

如何使用matplotlib查看并列直方图

当我定义一个继承的类时,我可以避免使用`metaclass=`吗?

如果服务器设置为不侦听创建,则QWebSocket客户端不连接到QWebSocketServer;如果服务器稍后开始侦听,则不连接