Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图在Python OOP中运行函数,但它一直被读取为str_Python_Oop_Tkinter - Fatal编程技术网

试图在Python OOP中运行函数,但它一直被读取为str

试图在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

每当我在按下按钮后尝试运行函数,而不是运行函数时,我都会收到一个错误消息

按钮(text=“Register”,height=“2”,width=“30”,command=lambda :self.RegScreen()).pack()AttributeError:'str'对象没有 属性“RegScreen”

我不确定是什么导致了这个错误,也不确定我该如何解决这个问题。下面是我到目前为止一直使用的代码。非常感谢您的帮助

主类:
定义初始化(自身,屏幕):
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。