试图在Python OOP中运行函数,但它一直被读取为str
每当我在按下按钮后尝试运行函数,而不是运行函数时,我都会收到一个错误消息 按钮(text=“Register”,height=“2”,width=“30”,command=lambda :self.RegScreen()).pack()AttributeError:'str'对象没有 属性“RegScreen” 我不确定是什么导致了这个错误,也不确定我该如何解决这个问题。下面是我到目前为止一直使用的代码。非常感谢您的帮助试图在Python OOP中运行函数,但它一直被读取为str,python,oop,tkinter,Python,Oop,Tkinter,每当我在按下按钮后尝试运行函数,而不是运行函数时,我都会收到一个错误消息 按钮(text=“Register”,height=“2”,width=“30”,command=lambda :self.RegScreen()).pack()AttributeError:'str'对象没有 属性“RegScreen” 我不确定是什么导致了这个错误,也不确定我该如何解决这个问题。下面是我到目前为止一直使用的代码。非常感谢您的帮助 主类: 定义初始化(自身,屏幕): self.screen=Tk() se
主类:
定义初始化(自身,屏幕):
self.screen=Tk()
self.loginscreen=StringVar()
self.username=StringVar()
self.password=StringVar()
self.var_FName=StringVar()
self.var_SName=StringVar()
self.var_password1=StringVar()
self.var_usertype=StringVar()
self.UserID=StringVar()
def主屏幕(自身):
#Main.addtohomeworkB()
screen=Tk()
屏幕几何(“300x250”)
屏幕标题(“主菜单”)
标签(text=“欢迎使用MyComputerScience!”,bg=“白色”,width=“300”,height=“2”,font=(“Calibri”,13)).pack()
标签(text=”“).pack()
按钮(text=“Login”,height=“2”,width=“30”,command=lambda:self.Login).pack()
标签(text=”“).pack()
按钮(text=“Register”,height=“2”,width=“30”,command=lambda:self.RegScreen).pack()
标签(text=”“).pack()
screen.mainloop()
def注册表屏幕(自身):
打印(“bRuh”)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
主屏幕。主屏幕(自身)
您正在错误地调用主屏幕。它是对象上的一个方法,因此必须首先创建一个对象
您需要这样启动程序:
main = Main()
main.main_screen()
您还存在创建两个根窗口的问题:一个在\uuuu init\uuu
中,另一个在主屏幕中。您应该只创建一个实例 我最好的猜测是command=lambda:self.RegScreen()
中的括号引起了问题。试着不用它们,比如command=lambda:self.RegScreen
,或者更好的command=self.RegScreen
。即使没有括号,它也不起作用。删除lambda:
怎么样?试一下:按钮(text=“Register”,height=“2”,width=“30”,command=self.RegScreen).pack()
正如@accdias所建议的,如果没有lambda,屏幕不会加载,它会尝试自动运行self.regscreen。