Python 添加缺少1个必需的位置参数的小部件:';屏幕';还包括参数';屏幕';未实现
编辑:它声明它想要Python 添加缺少1个必需的位置参数的小部件:';屏幕';还包括参数';屏幕';未实现,python,kivy,Python,Kivy,编辑:它声明它想要SM.add\u小部件(self,screen),但如果我添加它,它将成为一个未解析的引用。。。我会继续努力的 我很抱歉,我是一个完全的noob在这,这是我的第一个更复杂的项目,没有使用教程。 我一生都想不出一个方法来纠正这个错误/ 我不想在这个项目中使用.kv文件 Traceback (most recent call last): File "C:\Users\danti\PycharmProjects\IoU\main.py", line 188,
SM.add\u小部件(self,screen)
,但如果我添加它,它将成为一个未解析的引用。。。我会继续努力的
我很抱歉,我是一个完全的noob在这,这是我的第一个更复杂的项目,没有使用教程。
我一生都想不出一个方法来纠正这个错误/
我不想在这个项目中使用.kv文件
Traceback (most recent call last):
File "C:\Users\danti\PycharmProjects\IoU\main.py", line 188, in <module>
SM.add_widget(screen)
TypeError: add_widget() missing 1 required positional argument: 'screen'
这是我的database.py文件,以备参考
import datetime
from kivy.uix.popup import Popup
from kivy.uix.label import Label
class DataBase:
def __init__(self, filenaem):
self.filename = filenaem
self.users = None
self.file = None
self.load()
def load(self):
self.file = open(self.filename, 'r')
self.users = {}
for line in self.file:
email, password, name, created = line.strip().split(';')
self.users[email] = (password, name, created)
self.file.close()
def get_user(self, email):
if email in self.users:
return self.users[email]
else:
return -1
def add_user(self, email, password, name):
if email.strip() not in self.users:
self.users[email.strip()] = (password.strip(), name.strip(), DataBase.get_date())
self.save()
else:
print('This email already exists!')
return -1
def validate(self, email, password):
if self.get_user(email) != -1:
return self.users[email][0] == password
else:
return False
def save(self):
with open(self.filename, 'w') as f:
for user in self.users:
f.write(user + ';' + self.users[user][0] + ';' + self.users[user][1] + ';' + self.users[user][2] + '\n')
@staticmethod
def get_date():
return str(datetime.datetime.now()).split(' ')[0]
ScreenManager
的add\u widget()
方法是一种实例方法,应该在ScreenManager
的实例上调用。在您的代码中,SM
是一个ScreenManager
类,它不是ScreenManager
的实例。因此,您需要通过执行以下操作来创建实例:
sm = SM()
screens = [MyLogin(name='_mylgn'), NewAcct(name='_newacct'), Wlcm(name='_wlcm')]
for screen in screens:
sm.add_widget(screen)
您的build()
方法可能如下所示:
class MyApp(App):
def build(self):
return sm
class MyApp(App):
def build(self):
return sm