当前位置: 主页 > 数据库

数据库管理器-炉石传说看自己牌库器

发布时间:2023-02-09 22:16   浏览次数:次   作者:佚名

我想获得每个类中属性的示例,例如用户密码和电子邮件,但我也希望能够让 add_widget 仅提供名称,但是:这是我目前拥有的代码

from kivy.uix import Screen, ScreenManager
class WindowManager(ScreenManager):
    pass
sm = WindowManager()

在登录窗口中

class LoginWindow(Popups, Screen, FloatLayout, BoxLayout):
    def __init__(self, email, password, checkBox, **kwargs):
        self.email = email
        self.password = password
        self.checkBox = checkBox
        super(self, **kwargs).__init__()
        self.name = "login"

在主应用程序窗口中

sm.add_widget(LoginWindow(name="login"))

炉石传说看自己牌库器_数据库管理器_疾病库数据

#actual phone app class class PhoneAssistantApp(App): def __init__(self): super(self).__init__() def build(self): if LoginWindow.checkBox == True: sm.current = "main" else: sm.current = "login" #user sent to login page whenever program is ran return sm

数据库管理器_疾病库数据_炉石传说看自己牌库器

if __name__ == "__main__": PhoneAssistantApp().run()

但它抛出一个错误:

line 352, in 
     sm.add_widget(LoginWindow(name="login"))
 TypeError: __init__() missing 3 required positional arguments: 'email', 'password', and 'checkBox'

我的 kv 文件中的登录窗口很简单:

:
    name: "login" #name used to know where to send
    email: email #links to object property in py file class
    password: password #links to object property in py file class
    checkBox: checkBox #links to boolean property in py file class

我认为错误出在我的主程序中,因为我试图弄清楚如何将两个属性示例都放入 kivy 中。

数据库管理器_炉石传说看自己牌库器_疾病库数据

首先,我在 App 类中设置 sm.add_widget 和类名,例如

class PhoneAssistantApp(App):
    def __init__(self, **kwargs):
        super(self, **kwargs).__init__()
        self.screens = ((LoginWindow(name="login"), CreateAccountWindow(name="Create))
        self.sm = ScreenManager()
    def build(self):
        for screen in self.screens:
            self.sm.add_widget(screens)
        if LoginWindow.checkBox == True:
            self.sm.current = "main"
        else:

炉石传说看自己牌库器_疾病库数据_数据库管理器

self.sm.current = "login" #user sent to login page whenever program is ran return self.sm if __name__ == "__main__": PhoneAssistantApp().run()

除了

class PhoneAssistantApp(App):
    def __init__(self, **kwargs):
        super(self, **kwargs).__init__()
        self.screens = ((LoginWindow(name="login"), CreateAccountWindow(name="Create))
    def build(self):
        for screen in self.screens:

数据库管理器_疾病库数据_炉石传说看自己牌库器

sm.add_widget(screens) if LoginWindow.checkBox == True: sm.current = "main" else: sm.current = "login" #user sent to login page whenever program is ran return sm if __name__ == "__main__": PhoneAssistantApp().run()

但是,删除它并没有解决问题。 此外,删除 kwargs 可能也无济于事。 在我将 init 添加到班级之前数据库管理器,它工作正常。 我正在使用 Visual Studio Code数据库管理器,在我添加 init** 之前,将鼠标悬停在上面的名称上会显示“name=[literal]”login,现在它只显示“name=”any。但是,在我的登录类中的新代码,当鼠标悬停在登录类中的名称上时,它还会返回“name=[literal] login”。相反,我希望能够使用该名称而不必将其他属性缩进到我的 sm 中.add_widget. 虽然我确实尝试将属性放入其中以查看可行的方法,但我倾向于放入:

sm.add_widget(LoginWindow(name="login", email=LoginWindow.email, password=LoginWindow.password, checkBox=LoginWindow.checkBox))

因为我只想要属性示例,但我认为这不是我应该做的,因为它只会给我错误。

line 352, in 
     sm.add_widget(LoginWindow(name="login", email=LoginWindow.email, password=LoginWindow.password, checkBox=LoginWindow.checkBox))
 AttributeError: type object 'LoginWindow' has no attribute 'email'

感谢所有能提供帮助的人。