Как я могу сделать в Kivy, нажав кнопку, чтобы изменить текст другой кнопки (кнопки)? - PullRequest
0 голосов
/ 06 января 2020

Я работаю над Kivy Framework для создания настольного приложения.

Например, когда вы нажимаете кнопку «Eng», она изменяет текст кнопки (ей) на Engli sh. По аналогии, когда вы нажимаете кнопку «Fra», она меняется на французский.

Example

Я пытался подобрать конструкцию, когда вы вводите некоторую информацию в Textinput и после При нажатии на кнопку информация появляется на ярлыке. Я только что заменил ярлык на кнопку, но я все еще не знаю, как заставить это работать.

Мой файл test.py

class Container(BoxLayout):
    pass
    button_test=ObjectProperty()
    wbutton_eng=ObjectProperty()
    wbutton_fra=ObjectProperty()

    def change_text(self):
        self.buttontest.text
        self.wbutton_fra.text()
        self.wbutton_eng.text()

Мой файл KV

<Container>:
    BoxLayout:
        canvas:
            Color:
                rgb: 120, 1, 1, 0.9
            Rectangle:
                size: self.size

        orientation:'vertical'

        button_test:buttonone
        wbutton_eng:buttoneng
        wbutton_fra:buttonfra

        Button:
            id:buttonone
            text:'[color=ff3333]Text in French or English[/color]'
            font_size:24
            size_hint:1,0.09
            background_color: 0,0,0.5
            canvas.before:
                Color:
                    rgba: 1, 2, 0.3, .6
                Rectangle:
                    pos: self.pos
                    size: self.size
            markup: True

        Button:
            id:buttoneng
            text:'[color=ff3333]Eng[/color]'
            font_size:24
            size_hint:1,0.09
            background_color: 0,0,0.5
            canvas.before:
                Color:
                    rgba: 1, 2, 0.3, .6
                Rectangle:
                    pos: self.pos
                    size: self.size
            markup: True
                on_press
                    root.change_text()
        Button:
            id:buttonfra
            text:'[color=ff3333]Fra[/color]'
            font_size:24
            size_hint:1,0.09
            background_color: 0,0,0.5
            canvas.before:
                Color:
                    rgba: 1, 2, 0.3, .6
                Rectangle:
                    pos: self.pos
                    size: self.size
            markup: True
                on_press
                    root.change_text()

1 Ответ

0 голосов
/ 06 января 2020

Логика c предназначена для создания словаря, который содержит в качестве ключа идентификатор языка и в качестве значения текст для перевода. Затем свяжите каждую кнопку с идентификатором языка.

Простой пример:

from kivy.app import App
from kivy.lang.builder import Builder
from kivy.properties import StringProperty
from kivy.uix.boxlayout import BoxLayout


class Container(BoxLayout):
    message = StringProperty()

    def retranslate(self, language):
        texts = {"en": "Hello World", "fr": "Salut monde"}
        self.message = texts.get(language, "")


Builder.load_string(
    """
<Container>:
    orientation: 'vertical'
    Button:
        text: root.message
    Button:
        text: "Eng"
        on_press: root.retranslate("en")
    Button:
        text: "Fra"
        on_press: root.retranslate("fr")
"""
)


class MyApp(App):
    def build(self):
        w = Container()
        w.retranslate("en")
        return w


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

...