【发布时间】:2019-03-03 15:11:43
【问题描述】:
大家好,对于我上一个问题的人来说,对不起,由于这个问题让我在决赛中遇到了问题,所以我没有完成我的游戏,所以我有一个带有 2 个“START”按钮“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}
这就是程序员.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 个构建器,但由于两者都有一个“菜单”屏幕覆盖了另一个,我想我可以这样说。所以我只想有 1 个菜单,上面有 2 个 START 按钮,就像上图一样,它可以让你开始激活指定的 .kv 文件,谁能帮忙,现在我不知道如何做到这一点,我还在研究。
【问题讨论】:
-
我编辑了您的帖子以更好地显示您的
kv文件,但存在几个问题。首先,任何kv文件都应该只有一个root小部件(请参阅documentation)。其次,您的py文件中有两行以presentation =开头。这意味着第一个presentation被第二个覆盖。请查看您的kv文件,以确保准确代表您的实际文件。一种更合理的方法可能是只使用一个kv文件,其中一个Screen用于程序员视图,另一个用于社交视图。 -
感谢编辑文件现在看起来更好了。我希望这个应用程序有一个 kv 文件,其中有一个屏幕供程序员使用,另一个屏幕供社交使用,但问题是如何使两个 kv 文件像并行工作一样,因为上面的两个 kv 文件都有 MAINSCREEN 一个覆盖另一个但我想要像上面的图片一样工作,甚至尝试创建一个只有主屏幕的 kv 文件,但我不知道如何将 START 按钮链接到它自己的 kv 文件我不知道这是否可能
-
您的两个
kv文件在加载时都将失败,并出现Only one root object is allowed错误。请参阅kv语言documentation。您对如何使用多个kv文件的描述听起来与使用多个Screen小部件完全相同,并且可以使用一个kv文件来完成。没有将应用程序从一个“kv”文件切换到另一个文件的记录方法。
标签: python python-3.x kivy screen