object.__init__() 不接受任何参数。

问题描述 投票:-1回答:1

所以我目前正在做一个应用,它有一个登录功能,同时主窗口内有一个菜单功能。我在代码上遇到了一个问题,因为我得到了错误。

File "C:\Users\Muna Abdullahi\AppData\Local\Programs\Python\Python37-32\lib\site-packages\kivy\uix\widget.py", line 350, in __init__ super(Widget, self).__init__(**kwargs) File "kivy\_event.pyx", line 243, in kivy._event.EventDispatcher.__init__ TypeError: object.__init__() takes no arguments

这是我的代码

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import ObjectProperty
from kivy.uix.popup import Popup
from kivy.uix.label import Label
from kivy.core.window import Window
from database import DataBase
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.widget import Widget
from kivy.config import Config

Window.clearcolor = (0.5294, 0, 0.3176, 0)

Config.set('kivy', 'keyboard_mode', 'systemandmulti')

class ForgotWindow(Screen):
    namee = ObjectProperty(None)
    email = ObjectProperty(None)

   def VerificationBtn(self):
       pass

   def loginBtn(self):
       sm.current = "login"

class CreateAccountWindow(Screen):
    namee = ObjectProperty(None)
    email = ObjectProperty(None)
    password = ObjectProperty(None)

    def submit(self):
        if self.namee.text != "" and self.email.text != "" and self.email.text.count("@") == 1 and self.email.text.count(".") > 0:
            if self.password != "":
                db.add_user(self.email.text, self.password.text, self.namee.text)

                self.reset()

                sm.current = "login"
           else:
               invalidForm()
       else:
           invalidForm()

   def login(self):
       self.reset()
       sm.current = "login"

   def reset(self):
       self.email.text = ""
       self.password.text = ""
       self.namee.text = ""

   def createBtn(self):
       self.reset()
       sm.current = "create"


class LoginWindow(Screen):
    email = ObjectProperty(None)
    password = ObjectProperty(None)

    def loginBtn(self):
        if db.validate(self.email.text, self.password.text):
            MainWindow.current = self.email.text
            self.reset()
            sm.current = "main"
        else:
            invalidLogin()

    def createBtn(self):
        self.reset()
        sm.current = "create"

    def forgot(self):
        self.reset()
        sm.current = "forgot"

    def reset(self):
        self.email.text = ""
        self.password.text = ""


class MainWindow(BoxLayout):
    pass

class Screen_One(Screen):
    pass

class Screen_Two(Screen):
    pass



class WindowManager(ScreenManager):
    pass


def invalidLogin():
    popup = Popup(title='Invalid Login',
                  content=Label(text='Invalid username or password.'),
                  size_hint=(None, None), size=(400, 400))
    popup.open()


def invalidForm():
    popup = Popup(title='Invalid Form',
                  content=Label(text='Please fill in all inputs with valid information.'),
                  size_hint=(None, None), size=(400, 400))

    popup.open()


kv = Builder.load_file("my.kv")

sm = WindowManager()
db = DataBase("users.txt")

screens = [LoginWindow(name="login"), 
CreateAccountWindow(name="create"),ForgotWindow(name="forgot"), 
MainWindow(name="main"), Screen_One(name="Screen_One"), 
Screen_Two(name="Screen_Two")]
for screen in screens:
    sm.add_widget(screen)

sm.current = "login"


class MyMainApp(App):
    def build(self):
        return sm

if __name__ == "__main__":
    MyMainApp().run() `

如果你需要我的kivy文件,我可以把它发过来。

谁能帮我解决这个问题?我需要尽快修复代码,因为这是我学校项目的一部分。另外,如果有人能帮我解决Kivy的问题,那就太好了,谢谢。

python python-3.x python-requests kivy kivy-language
1个回答
0
投票

你的 MainWindow 班级 BoxLayout但是 BoxLayout 不支持 name 属性。您只需要删除 name 争论来自 MainWindow 创作。

MainWindow(name="main")

应该只是:

MainWindow()
© www.soinside.com 2019 - 2024. All rights reserved.