Python3 Kivy Ошибка в файлах kivy: 'NoneType' object is not subscriptable
Пока целью было создать приложение с несколькими экранами и общим меню с кнопками для выбора экранов. Вот файл main.py:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import ObjectProperty
class Container(FloatLayout):
class EegScreen(Screen):
pass
class SettingsScreen(Screen):
pass
class ExchangeScreen(Screen):
pass
class ConnectionsScreen(Screen):
pass
#buildKV = Builder.load_file("C:/Users/user/PycharmProjects/pythonProject1/my.kv")
class MyApp(App):
def build(self):
return Container()
if __name__ == '__main__':
MyApp().run()
my.kv:
<Container>:
Label:
text: 'PERMANENT'
Button:
text: 'Connections'
font_size: 20
on_release: app.root.current = 'ConnectionsScreen'
Button:
text: 'Exchange'
font_size: 20
on_release: app.root.current = 'ExchangeScreen'
Button:
text: 'EEG Signal'
font_size: 20
on_release: app.root.current = 'EegScreen'
Button:
text: 'Settings'
font_size: 20
on_release: app.root.current = 'SettingsScreen'
ScreenManager:
id: screen_manager
EegScreen:
id: eeg_screen
name:'EegScreen'
manager: 'screen_manager'
SettingsScreen:
name:'SettingsScreen'
manager: 'screen_manager'
ExchangeScreen:
name:'ExchangeScreen'
manager: 'screen_manager'
ConnectionsScreen:
name:'ConnectionsScreen'
manager: 'screen_manager'
<EegScreen>:
FloatLayout:
Label:
text: 'EEG Signals'
<SettingsScreen>:
FloatLayout:
Label:
text: 'EEG Signals'
<ExchangeScreen>:
FloatLayout:
Label:
text: 'EEG Signals'
<ConnectionsScreen>:
FloatLayout:
Label:
text: 'EEG Signals'
При запуске выдаёт следующее:
Traceback (most recent call last):
File "C:\Users\user\PycharmProjects\pythonProject1\main.py", line 43, in <module>
MyApp().run()
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\kivy\app.py", line 954, in run
self._run_prepare()
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\kivy\app.py", line 923, in _run_prepare
self.load_kv(filename=self.kv_file)
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\kivy\app.py", line 696, in load_kv
root = Builder.load_file(rfilename)
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\kivy\lang\builder.py", line 305, in load_file
return self.load_string(data, **kwargs)
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\kivy\lang\builder.py", line 372, in load_string
parser = Parser(content=string, filename=fn)
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\kivy\lang\parser.py", line 483, in __init__
self.parse(content)
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\kivy\lang\parser.py", line 593, in parse
objects, remaining_lines = self.parse_level(0, lines)
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\kivy\lang\parser.py", line 696, in parse_level
_objects, _lines = self.parse_level(
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\kivy\lang\parser.py", line 756, in parse_level
if current_property[:3] == 'on_':
TypeError: 'NoneType' object is not subscriptable
Process finished with exit code 1
Что изменить в программе, чтобы всё работало как должно - выдавало окно FloatLayout с 4-мя кнопками, при нажатии на которые можно было бы переходить между экранами (их функционал буду описывать после исправления)?
Нужно решение именно с использованием *.kv файла, чтобы не перегружать main.py. Только начала знакомство с kivy, заранее спасибо за помощь
Источник: Stack Overflow на русском