Здравствуйте, я разместил свои файлы ниже. Я сталкиваюсь с проблемой запуска только половины моей программы Kivy. Теперь я могу только запустить ScreenManager. Кнопки, созданные в файле KV под <LevelsWindow>
, <GameWindow>
и <SuccessWindow>
, являются единственными кнопками, которые я вижу. При щелчке они работают должным образом (переключаются на каждый экран).
Однако, если я откорректирую свой файл KV, удалив <Touch>:
, и все, что меньше FloatLayout:
, уменьшит отступ на 1 размер вкладки,а затем увеличьте WindowManager:
и три строки под ним на один размер вкладки. Мой код запустит раздел FloatLayout и покажет кнопки (1-10) вместе с печатью «нажатой #» при нажатии, но раздел ScreenManager больше не работает. Кнопка появляется, но при нажатии ничего не происходит.
Мне кажется, мне нужно куда-то добавить add_widget, но я не уверен. Может кто-нибудь подсказать мне, что я делаю неправильно и как решить?
file: my.kv
#:kivy 1.11.1
<Button>:
font_size:25
size_hint: .1, .1
<Touch>:
FloatLayout:
Button:
id:btn1
pos_hint:{"x":.25, "top":1}
text:"1"
on_press:app.pressed(self)
Button:
pos_hint:{"x":.35, "top":1}
text:"2"
on_press:app.pressed(self)
Button:
pos_hint:{"x":0.45, "top":1}
text:"3"
on_press:app.pressed(self)
Button:
pos_hint:{"x":0.55, "top":1}
text:"4"
on_press:app.pressed(self)
Button:
pos_hint:{"x":0.65, "top":1}
text:"5"
on_press:app.pressed(self)
Button:
pos_hint:{"x":0.25, "y":0.8}
text:"6"
on_press:app.pressed(self)
Button:
pos_hint:{"x":0.35, "y":0.8}
text:"7"
on_press:app.pressed(self)
Button:
pos_hint:{"x":0.45, "y":0.8}
text:"8"
on_press:app.pressed(self)
Button:
pos_hint:{"x":0.55, "y":0.8}
text:"9"
on_press:app.pressed(self)
Button:
pos_hint:{"x":0.65, "y":0.8}
text:"10"
on_press:app.pressed(self)
WindowManager:
LevelsWindow:
GameWindow:
SuccessWindow:
<LevelsWindow>:
name: "levels"
Button:
text:"Go to Gameboard"
on_press: app.root.current = "board"
<GameWindow>:
name: "board"
Button:
text:"right or wrong"
on_press: app.root.current = "correct"
<SuccessWindow>:
name: "correct"
Button:
text: "Go Home"
on_press: app.root.current = "levels"
file: Myapp.py
import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
from kivy.uix.floatlayout import FloatLayout
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
class LevelsWindow(Screen):
pass
class GameWindow(Screen):
pass
class SuccessWindow(Screen):
pass
class WindowManager(ScreenManager):
pass
class Touch(Widget):
def on_touch_down(self, Touch):
pass
def on_touch_move(self, Touch):
pass
def on_touch_up(self, Touch):
pass
kv = Builder.load_file("my.kv")
class MyApp(App):
def pressed(self, instance):
name = instance.text
print "pressed " + name
def build(self):
return kv
if __name__=='__main__':
MyApp().run()