如何修复 - 属性错误:'function'对象在 tkinter gui 应用程序中没有属性'forget'或属性'forget_pack'



我正在写一个更友好的GUI应用程序,有一个main.py。在main.py中,我调用了显示不同屏幕的函数。我所有的函数都位于functions.py中。我在main.py中导入了functions.py .

main.py中的代码如下:

from tkinter import *
import tkinter as tk
import functions
functions.login()

functions.login()在提交信息后调用另一个login_click()。如果登录数据正常,gui将显示另一个屏幕-管理屏幕。另一个屏幕也是一个函数admin_screen()。

我试图通过添加一个函数来隐藏第一个屏幕:


def hide_main_screen():
login.forget_pack()  #or login.forget() 
admin_screen()

在login_click()中像这样调用hide_main_screen():

def login_click():
global name
global password
name=e_usn.get()
password=e_pass.get()
if name=="" or password =="":
messagebox.showwarning('Warning!', 'No data.')
elif name=='admin' and password=='12345':
print('Login OK')
hide_main_screen()      
else:
messagebox.showerror('Login Error!', 'Username or password are false.')

我正在尝试进入另一个gui屏幕(管理屏幕)并隐藏第一个(登录屏幕)。

我的错误显示为:

文件"d:PyFlorafunctions.py",第71行,在hide_main_screenlogin.forget_pack ()AttributeError: 'function'对象没有'forget_pack'属性

两件事:

  1. 您正在寻找隐藏已添加到GUI中的pack()几何管理器的小部件的最佳方法是pack_forget(),而不是forget_pack()

  2. pack_forget()将只工作在tkinter小部件,只有当他们已经packed(即,pack_forget()不工作与place()grid()添加的小部件)

pack_forget()不能在你的login函数上工作,因为它不是一个tkinter小部件。

如果你有一个窗口,你想隐藏,即Toplevel对象,你可以简单地destroy()当你不再需要它。如果您有单独的部件,您已经pack编辑并想要隐藏,您可以使用pack_forget()

相关内容

  • 没有找到相关文章

最新更新