Несколько файлов .kv, управляющих 2 файлами .kv - PullRequest
0 голосов
/ 03 марта 2019

Привет всем для тех, кто из моего последнего вопроса здесь, извините, я не закончил свою игру из-за этой проблемы, которая застала меня в финале, ТАК ЗДЕСЬ У меня есть меню с 2 кнопками «СТАРТ» «СТАРТ1» и «СТАРТ2»«так что я хочу, чтобы каждый раз, когда я нажимал« START1 », он переводил меня в назначенный файл .kv, а когда я нажимал« START2 », он переходил в назначенный файл .kv, здесь была фотография того, что я хочу, и образец того, что я сделал.до сих пор enter image description here

#: 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 кнопками «ПУСК», как на картинке выше, с помощью которого можно активировать назначенный файл .kv, можно ли кому-нибудь помочь, сейчас я понятия не имею, как это сделать.1013 *

1 Ответ

0 голосов
/ 04 марта 2019

Вот пример того, как сделать то, что вы просили.Использование 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 создаст два независимых экземпляра каждого из этих виджетов.

...