所以我目前正在做一个应用,它有一个登录功能,同时主窗口内有一个菜单功能。我在代码上遇到了一个问题,因为我得到了错误。
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的问题,那就太好了,谢谢。
你的 MainWindow
班级 BoxLayout
但是 BoxLayout
不支持 name
属性。您只需要删除 name
争论来自 MainWindow
创作。
MainWindow(name="main")
应该只是:
MainWindow()