Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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 添加缺少1个必需的位置参数的小部件:';屏幕';还包括参数';屏幕';未实现_Python_Kivy - Fatal编程技术网

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