问题描述
我继续使用Python和Kivy进行POS教程,并陷入了似乎消失并不断出现的错误。我有一个main.py文件,试图在其中加载引发属性错误的窗口admin.py
File "C:/Users/John/PycharmProjects/FirstKivyApplication/main.py",line 3,in <module>
from Admin.admin import AdminWindow
File "C:\Users\John\PycharmProjects\FirstKivyApplication\Admin\admin.py",line 22,in <module>
Builder.load_file('Admin/admin.kv')
File "C:\Users\John\PycharmProjects\FirstKivyApplication\lib\site-packages\kivy\lang\builder.py",line 301,in load_file
return self.load_string(data,**kwargs)
File "C:\Users\John\PycharmProjects\FirstKivyApplication\lib\site-packages\kivy\lang\builder.py",line 399,in load_string
widget = Factory.get(parser.root.name)(__no_builder=True)
File "C:\Users\John\PycharmProjects\FirstKivyApplication\lib\site-packages\kivy\factory.py",line 130,in __getattr__
raise AttributeError
AttributeError
MAIN.PY
from kivy.app import App
from kivy.uix.Boxlayout import BoxLayout
from Admin.admin import AdminWindow
from Signin.signin import SignInWindow
from Operator.theoperator import OperatorWindow
class MainWindow(BoxLayout):
admin_widget = AdminWindow() #An instance of our Admin wdindow
signin_widget = SignInWindow() # An instance of our sign in window
operator_widget = OperatorWindow() # An instance of our Operator window
def __init__(self,**kwargs):
super().__init__(**kwargs)
self.ids.scrn_si.add_widget(self.signin_widget)
self.ids.scrn_admin.add_widget(self.admin_widget)
self.ids.scrn_op.add_widget(self.operator_widget)
class MainApp(App):
def build(self):
return MainWindow()
if __name__ == "__main__":
sa = MainApp()
sa.run()
ADMIN.PY
from kivy.uix.modalview import ModalView
from kivy.lang import Builder
Builder.load_file('Admin/admin.kv')
class Notify(ModalView):
def __init__(self,**kwargs):
super().__init__(**kwargs)
self.size_hint = (.3,.3)
class AdminWindow(BoxLayout):
def __init__(self,**kwargs):
super().__init__(**kwargs)
def logout(self):
self.parent.parent.current = 'scrn_si'
class AdminApp(App):
def build(self):
return AdminWindow()
if __name__ == '__main__':
AdminApp().run()
这是我的项目结构:
解决方法
我在下面的相对kv文件中忘记了此声明。
#: import Window kivy.core.window.Window