大家好,对于那些从我的上一个问题在这里,抱歉我没有完成我的游戏由于这个问题,抓住了我在决赛中,所以这是我有一个带有2个“开始”按钮"START1“和"START2”的菜单,所以我想要的是,每当我按下"START1“它会把我带到指定的.kv文件,当我按下"START2”它进入指定的.kv文件这里是我想要的图片和到目前为止我所做的一个样本

#: import FadeTransition kivy.uix.screenmanager.FadeTransition
ScreenManagement:
transition: FadeTransition()
MainScreen:
GameScreen1:
GameScreen2:
Button:
size_hint: 0.2,0.1
font_size: 20
MainScreen:
name: "Start"
Button:
on_release: app.root.current = "game1"
text: "START"
color: 1,0,0,1
GameScreen1:
name: "game1"
Button:
pos_hint: {"right":1,"top":0.5}
color: 1,0,0,1
on_release: app.root.current = "game2"
text: "Next"
background: 0,1,0,1
Label:
pos_hint: {"x": 0, "y": 0}
text: "Python\n\n Ruby"
font_size:40
Button:
text: "HOME"
on_release: app.root.current = "Start"
pos_hint: {"x": 0.1, "y": 0}
GameScreen2:
name: "game2"
Button:
pos_hint: {"right":1,"top":0.5}
color: 1,0,0,1
on_release: app.root.current = "game1"
text: "Next"
background: 0,1,0,1
Label:
pos_hint: {"x": 0, "y": 0}
text: "Assembly\n\n Prolog"
font_size:40
Button:
text: "HOME"
on_release: app.root.current = "Start"
pos_hint: {"x": 0.1, "y": 0}这就是programmer.kv
#: import FadeTransition kivy.uix.screenmanager.FadeTransition
ScreenManagement:
transition: FadeTransition()
MainScreen:
GameScreen1:
GameScreen2:
Button:
size_hint: 0.2,0.1
font_size: 20
MainScreen:
name: "Start"
Button:
on_release: app.root.current = "game1"
text: "START"
color: 1,0,0,1
GameScreen1:
name: "game1"
Button:
pos_hint: {"right":1,"top":0.5}
color: 1,0,0,1
on_release: app.root.current = "game2"
text: "Next"
background: 0,1,0,1
Label:
pos_hint: {"x": 0, "y": 0}
text: "HELLO"
font_size:40
Button:
text: "HOME"
on_release: app.root.current = "Start"
pos_hint: {"x": 0.1, "y": 0}
GameScreen2:
name: "game2"
Button:
pos_hint: {"right":1,"top":0.5}
color: 1,0,0,1
on_release: app.root.current = "game1"
text: "Next"
background: 0,1,0,1
Label:
pos_hint: {"x": 0, "y": 0}
text: "WORLD"
font_size:40
Button:
text: "HOME"
on_release: app.root.current = "Start"
pos_hint: {"x": 0.1, "y": 0}这就是social.kv
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.uix.label import Label
class MainScreen(Screen):
pass
class GameScreen1(Screen):
pass
class GameScreen2(Screen):
pass
class ScreenManagement(ScreenManager):
pass
presentation = Builder.load_file("social.kv")
presentation = Buider.load_file("programmer.kv")
class Myapp(App):
def builder(self):
return presentation
if __name__ == "__main__":
Myapp().run()我试着做两个构建器,但由于两个都有一个“菜单”屏幕覆盖了另一个,我想我可以这样说。所以我想只有一个菜单与2个开始按钮,如上面的图片,将使一个开始激活指定的.kv文件,谁能帮助,现在我没有关于如何做的线索,即时通讯仍在研究。
发布于 2019-03-05 00:54:24
这里有一个如何按照你的要求做的例子。使用2个kv文件。这就是ScreenManager可以为您做的事情。
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
presentation1 = Builder.load_string('''
Button:
text: 'This is presentation1'
on_press: app.switchToRoot2()
''')
presentation2 = Builder.load_string('''
Button:
text: 'This is presentation2'
on_press: app.switchToRoot1()
''')
class MultiplKVApp(App):
def build(self):
self.root_layout = FloatLayout()
self.root_layout.add_widget(presentation1)
return self.root_layout
def switchToRoot2(self, *args):
self.root_layout.clear_widgets()
self.root_layout.add_widget(presentation2)
def switchToRoot1(self, *args):
self.root_layout.clear_widgets()
self.root_layout.add_widget(presentation1)
MultiplKVApp().run()请注意,这两个kv文件都有MainScreen、GameScreen1和GameScreen2的实例。因此,kivy将为每个小部件创建两个独立的实例。
https://stackoverflow.com/questions/54970248
复制相似问题