Создание двухэкранного меню Kivy - изменение изображения и метки из выделенного - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь создать двухэкранный интерфейс сенсорного экрана Kivy на Raspberry Pi, который действует как выбираемый интерфейс меню для выполнения функции в зависимости от выбора.

Экран 1: Показывает восемь блоков - каждый блок состоит из BoxLayout, который состоит из метки, изображения, таймера, кнопки.

Экран 2: Предопределенный список блоков с именами и картинками и значением таймера.

Теперь допустим, что я хочу, чтобы для блока 2 на первом экране были установлены значения, выбранные на экране 2, я хочу нажать кнопку блока 2 на экране 1, откроется экран 2 и я выберу один из элементов. Теперь, в зависимости от того, что я выбрал на screen2, теперь он должен загрузить значения этого элемента и обновить блок 2 на screen1 с помощью Label, Image, Timer. Таймер должен быть таймером обратного отсчета.

У меня есть базовый макет, который работает с экранами screen1 и screen2, но я борюсь с концепцией обновления значений и несколькими блоками. Кодекс все еще немного запутан, но надеюсь, что он дает представление о том, что я пытаюсь сделать - пройдет после публикации вопроса. Экран Два по-прежнему не имеет значений ..

main.py

# class for aqua.kv file
class MainScreen(Screen):
        pass

# class for screen.kv file
class SelectScreen(Screen):
        pass

class Tray1(Screen):
        pass
# class for date.kv file
class Date(BoxLayout,EventDispatcher):

    def __init__(self,**kwargs):
        super(Date,self).__init__(**kwargs)


Builder.load_file('date.kv')
Builder.load_file('tray1.kv')
class MyApp(App):
        time = StringProperty()

        def update(self,*args):
                self.time = str(time.asctime())

        def build(self):
                Clock.schedule_interval(self.update,1)
                # Set up the layout:

                return Builder.load_file('screen.kv')

if __name__ == '__main__':
        MyApp().run()

screen.kv

ScreenManager:
        id: screen_manager
        MainScreen:
                id: main_screen
                name: 'MainScreen'
                manager: 'screen_manager'

        SelectScreen:
                id: select_screen
                name: 'SelectScreen'
                manager: 'screen_manager'
#       on_release: background_color = 1,0,0,1
<MainScreen>:
        BoxLayout:
                canvas.before:
                        Color:
                                rgba: .5,.6,.7,1
                        Rectangle:
                                pos: self.pos
                                size: self.size
                orientation:'vertical'
                BoxLayout:
                        size_hint:1,.2
                        Date:
                BoxLayout:
                        orientation: 'horizontal'
#               size_hint: .2,1
                        BoxLayout:
                                orientation: 'vertical'
                                Label:
                                        id:btn_tray1
                                        font_size: 30
                                Image:
                                        source:"logo.png"
                                Tray1:
                                Button:
                                        id:btn_tray1_1
                                        font_size: 30
                                        text:"Tray1"
                                        on_release: app.root.current = "SelectScreen"
                                #on_release: app.root.current = "SelectScreen"
                #       on_release: btn_tray1.background_color = 1,0,0,1
                        Button:
                                id:btn_tray2
                                font_size: 30
                                text:"Tray2"
                                on_release: app.root.current = "SelectScreen"
                        Button:
                                id: btn_tray3
                                font_size: 30
                                text:"Tray3"
                                on_release: app.root.current = "SelectScreen"

<SelectScreen>:
        BoxLayout:
                canvas.before:
                        Color:
                                rgba: .5,.6,.7,1
                        Rectangle:
                                pos: self.pos
                                size: self.size
                orientation:'vertical'
                BoxLayout:
                        orientation: 'horizontal'
                BoxLayout:
                        orientation: 'horizontal'
                #       size_hint: .2,1
                        Button:
                                size_hint:1,.2
                                id:btn_tray5
                                font_size: 30
                                text:"Tray5"
                                on_release: app.root.current = "MainScreen"
                #       on_release: btn_tray1.background_color = 1,0,0,1
                        Button:
                                size_hint:1,.2
                                id:btn_tray6
                                font_size: 30
                                text:"Tray6"
                                on_release: app.root.current = "MainScreen"
                        Button:
                                size_hint:1,.2
                                id: btn_tray7
                                font_size: 30
                                text:"Tray7"
                                on_release: app.root.current = "MainScreen"
                #       on_release: btn_tray3.background_color = 1,0,0,1
                        Button:
                                size_hint:1,.2
                                id: btn_tray8
                                font_size: 30
                                text:"Tray8"
                                on_release: app.root.current = "MainScreen"
                #       on_release: btn_tray4.background_color = 1,0,0,1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...