我正在用python中的kivy编写一个带有登录屏幕的简单应用程序。我决定将我的kivy代码拆分成更小的组件,但当我将其中一个组件放入生成器时,会出现以下错误:
Traceback (most recent call last):
File "main.py", line 48, in <module>
screen_manager.add_widget(LoginScreen(name=AppState.LOGIN_SCREEN))
File "C:\Users\Matis\Desktop\python\yolobot\app\login.py", line 41, in __init__
super(Screen, self).__init__(**kwargs)
File "C:\Program Files\Python36\lib\site-packages\kivy\uix\relativelayout.py", line 265, in __init__
super(RelativeLayout, self).__init__(**kw)
File "C:\Program Files\Python36\lib\site-packages\kivy\uix\floatlayout.py", line 65, in __init__
super(FloatLayout, self).__init__(**kwargs)
File "C:\Program Files\Python36\lib\site-packages\kivy\uix\layout.py", line 76, in __init__
super(Layout, self).__init__(**kwargs)
File "C:\Program Files\Python36\lib\site-packages\kivy\uix\widget.py", line 348, in __init__
Builder.apply(self, ignored_consts=self._kwargs_applied_init)
File "C:\Program Files\Python36\lib\site-packages\kivy\lang\builder.py", line 469, in apply
self._apply_rule(widget, rule, rule, ignored_consts=ignored_consts)
File "C:\Program Files\Python36\lib\site-packages\kivy\lang\builder.py", line 585, in _apply_rule
self._apply_rule(child, crule, rootrule)
File "C:\Program Files\Python36\lib\site-packages\kivy\lang\builder.py", line 582, in _apply_rule
child = cls(__no_builder=True)
TypeError: __init__() got an unexpected keyword argument '__no_builder'
我在网上查过这个错误,发现了与我的问题无关的文章,所以我想这是很少见的。当我把LoginForm类的kivy代码而不是LoginForm类引用放在登录.py我没有任何错误。 这是密码 主.py地址:
''
from kivy.config import Config
Config.set('graphics', 'resizable', False)
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager, NoTransition
from kivy.uix.checkbox import CheckBox
from kivy.core.window import Window
from core.yolobot import Yolobot
from app.login import LoginScreen
from app.keyactivation import KeyActivationScreen
from app.yolobotui import YolobotScreen
from app.reactivation import ReactivationScreen
from app.appstate import AppState
screen_manager = ScreenManager(transition=NoTransition())
screen_manager.add_widget(LoginScreen(name=AppState.LOGIN_SCREEN))
screen_manager.add_widget(KeyActivationScreen(name=AppState.KEY_ACTIVATION_SCREEN))
screen_manager.add_widget(YolobotScreen(name=AppState.YOLOBOT_SCREEN))
screen_manager.add_widget(ReactivationScreen(name=AppState.REACTIVATION_SCREEN))
class YolobotApp(App):
title = "Yolobot"
def build(self):
Window.size = WINDOW_SIZE
Window.clearcolor = BACKGROUND_COLOR
return screen_manager
if __name__ == "__main__":
YolobotApp().run()
''
你知道吗登录.py地址:
''
from kivy.uix.screenmanager import Screen
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInput
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.lang import Builder
from app.components.loginform import LoginForm
Builder.load_string("""
<LoginScreen>:
BoxLayout:
orientation: 'vertical'
padding: [10,50,10,50]
spacing: 50
Label:
text: 'Yolobot 1.0'
font_size: 64
LoginForm:
label_text: 'Username'
text_input_id: username
hide_content: False
LoginForm:
label_text: 'Password'
text_input_id: password
hide_content: True
Button:
text: 'Sign-in'
font_size: 20
""")
class LoginScreen(Screen):
def __init__(self, **kwargs):
super(Screen, self).__init__(**kwargs)
def login(login, password):
pass
''
你知道吗登录表单.py地址:
''
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.lang import Builder
Builder.load_string("""
<LoginForm>:
orientation: 'vertical'
Label:
text: root.label_text
font_size: 18
halign: 'left'
text_size: root.parent.width-20, 20
TextInput:
id: text_input_id
multiline: False
password: root.hide_content
font_size: root.text_input_font_size
""")
class LoginForm(BoxLayout):
def __init__(label_text='', text_input_id=None, hide_content=False):
super(BoxLayout, self).__init__()
self.label_text = label_text
self.text_input_id = text_input_id
self.hide_content = hide_content
self.text_input_font_size = 15
''
目前没有回答
相关问题 更多 >
编程相关推荐