您好,我已将文件放在下面。我遇到了只让我的Kivy程序运行一半的问题。现在,我只能让ScreenManager运行。我在KV文件的<LevelsWindow>
,<GameWindow>
和<SuccessWindow>
下创建的按钮是唯一看到的按钮。单击它们可以正常工作(切换到每个屏幕)。
但是,如果我通过移除<Touch>:
并让FloatLayout:
下的所有内容来调整我的KV文件,则将缩进量减小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()
答案 0 :(得分:0)
对于那些可能遇到此问题的人,在我的python脚本中,我必须继承自FloatLayout而不是Widget。因此,我将代码从以下类别更改:Touch(widget)类:Touch(FloatLayout)