Я пришел к вам сегодня, потому что не смог решить свою проблему в течение нескольких дней.
Что я пытаюсь сделать:
Iхочу создать панель инструментов на стороне моего приложения и сделать ее доступной на всех моих экранах.Я попробовал несколько вещей, но ничего не вышло :( Я оставлю вам часть своего кода, чтобы посмотреть, что я сделал.
[Я удалил код здесь, потому что я изменил свой код ниже]
Заранее спасибо за вашу помощь, и я доступен для получения дополнительной информации. Хорошего дня!
НОВОСТИ:
Я просто пытался сделать то, что мне посоветовали сделать @Erikно у меня возникает ошибка при запуске моей программы.
Ошибка
Traceback (most recent call last):
File "/Users/maelito/Desktop/tradingApp/app.py", line 1, in <module>
from gui import window as w
File "/Users/maelito/Desktop/tradingApp/gui/__init__.py", line 4, in <module>
app.run()
File "/Users/maelito/env/lib/python3.7/site-packages/kivy/app.py", line 799, in run
self.load_kv(filename=self.kv_file)
File "/Users/maelito/env/lib/python3.7/site-packages/kivy/app.py", line 596, in load_kv
root = Builder.load_file(rfilename)
File "/Users/maelito/env/lib/python3.7/site-packages/kivy/lang/builder.py", line 301, in load_file
return self.load_string(data, **kwargs)
File "/Users/maelito/env/lib/python3.7/site-packages/kivy/lang/builder.py", line 368, in load_string
parser = Parser(content=string, filename=fn)
File "/Users/maelito/env/lib/python3.7/site-packages/kivy/lang/parser.py", line 392, in __init__
self.parse(content)
File "/Users/maelito/env/lib/python3.7/site-packages/kivy/lang/parser.py", line 498, in parse
self.execute_directives()
File "/Users/maelito/env/lib/python3.7/site-packages/kivy/lang/parser.py", line 452, in execute_directives
kivy.lang.builder.Builder.load_file(ref)
File "/Users/maelito/env/lib/python3.7/site-packages/kivy/lang/builder.py", line 301, in load_file
return self.load_string(data, **kwargs)
File "/Users/maelito/env/lib/python3.7/site-packages/kivy/lang/builder.py", line 368, in load_string
parser = Parser(content=string, filename=fn)
File "/Users/maelito/env/lib/python3.7/site-packages/kivy/lang/parser.py", line 392, in __init__
self.parse(content)
File "/Users/maelito/env/lib/python3.7/site-packages/kivy/lang/parser.py", line 501, in parse
objects, remaining_lines = self.parse_level(0, lines)
File "/Users/maelito/env/lib/python3.7/site-packages/kivy/lang/parser.py", line 605, in parse_level
level + 1, lines[i:], spaces)
File "/Users/maelito/env/lib/python3.7/site-packages/kivy/lang/parser.py", line 664, in parse_level
if current_property[:3] == 'on_':
TypeError: 'NoneType' object is not subscriptable
Поэтому я тоже делюсь с вами новым кодом (у меня ничего не изменилось на screen1.kv и screen2.kv).
Window.py
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import Screen
from kivy.factory import Factory
from kivy.uix.gridlayout import GridLayout
from kivy.properties import ObjectProperty
from kivy.uix.screenmanager import ScreenManager
class ToolBar(GridLayout):
pass
class Screen1(Screen):
pass
class Screen2(Screen):
pass
class WindowInterface(GridLayout):
manager = ScreenManager()
toolbar = ToolBar()
screen_1 = Screen1()
screen_2 = Screen2()
screen_1.add_widget(toolbar)
screen_2.add_widget(toolbar)
manager.add_widget(screen_1)
manager.add_widget(screen_2)
def construct_toolbar(self):
self.toolbar.add_buttons(self)
class Window(App):
pass
window.kv
#:include gui/kv_files/screen_1.kv
#:include gui/kv_files/screen_2.kv
#:include gui/kv_files/toolbar.kv
#:import NoTransition kivy.uix.screenmanager.NoTransition
<WindowInterface>
name: 'main_screen'
BoxLayout:
orientation: "vertical"
Label:
text: "main screen"
Button:
text: "to screen 1"
on_press: app.root.current = "screen_1"
Button:
text: "to screen 2"
on_press: app.root.current = "screen_2"
ScreenManager:
Screen1:
Screen2:
ToolBar:
toolbar.kv
<Toolbar@GridLayout>
BoxLayout:
orientation: "vertical"
size: 10,100
canvas:
Color:
rgba: (1,1,1,1)
Rectangle:
size: self.size
pos: self.pos
Заранее спасибо. Maëlito!