Как изменить текст метки на другом экране, нажав кнопку Python Kivy

Как я могу изменить значение текста в метке на 2-м экране, нажав кнопку на 1-м экране?

В моем примере у меня 2 экрана, на первом 3 кнопки; один должен изменить текст на «1-й текст», второй должен изменить текст на «2-й текст», а третий используется для перемещения между этими двумя экранами.

На втором экране есть Ярлык, текст которого нужно менять, нажимая кнопки. Затем есть также кнопка, используемая для перехода к первому экрану.

Мой .py выглядит так:

import kivy
kivy.require("1.10.1")
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.app import App

class Screen1(Screen):
    pass

class Screen2(Screen):
    pass


class Select_text(App):
    def build(self):
        sm = ScreenManager(transition=FadeTransition())
        sm.add_widget(Screen1(name = "scr1"))
        sm.add_widget(Screen2(name = "scr2"))
        
        return sm

app = Select_text()
app.run()

Мой .kv выглядит так:

<Screen1>:
    
    id: scr1
    orientation: "vertical"
    canvas.before:
        Rectangle:
            pos: self.pos
            size: self.size
            source: "Background.png"
            
    Button:
        id: change_to_1
        pos: (root.width-self.width)/2, 400
        size: 1200, 200
        size_hint: None, None
        text: "Change the text on the 2nd screen to »1st text«"
        #on_press: (I don‘t know what should be there)
        
    Button:
        id: change_to_2
        pos: (root.width-self.width)/2, 800
        size: 1200, 200
        size_hint: None, None
        text: "Change the text on the 2nd screen to »2nd text«"
        #on_press: (I don‘t know what should be there)
        
    Button:
        id: go_to_other_screen
        pos: (root.width-self.width)/2, 1400
        size: 600, 200
        size_hint: None, None
        text: "Go to other screen"
        on_press: root.manager.current = "scr2"
        
<Screen2>:
    
    id: scr2
    orientation: "vertical"
    canvas.before:
        Rectangle:
            pos: self.pos
            size: self.size
            source: "Background.png"
            
    Label:
        id: text
        text: "Text which should be changed"
        pos: (root.width-self.width)/2, 800
        size: 600, 200
        
    Button:
        id: go_to_other_screen
        pos: (root.width-self.width)/2, 1400
        size: 600, 200
        size_hint: None, None
        text: "Go to other screen"
        on_press: root.manager.current = "scr1"

Я пытался искать в Интернете, но это не решило основную проблему. Спасибо за любой ответ.

Мутабельность и переработка объектов в Python
Мутабельность и переработка объектов в Python
Объекты являются основной конструкцией любого языка ООП, и каждый язык определяет свой собственный синтаксис для их создания, обновления и...
Другой маршрут в Flask Python
Другой маршрут в Flask Python
Flask - это фреймворк, который поддерживает веб-приложения. В этой статье я покажу, как мы можем использовать @app .route в flask, чтобы иметь другую...
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
Проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
Python PyPDF2 - запись метаданных PDF
Python PyPDF2 - запись метаданных PDF
Python скрипт, который будет записывать метаданные в PDF файл, для этого мы будем использовать PDF ридер из библиотеки PyPDF2 . PyPDF2 - это...
Переменные, типы данных и операторы в Python
Переменные, типы данных и операторы в Python
В Python переменные используются как место для хранения значений. Пример переменной формы:
Почему Python - идеальный выбор для проекта AI и ML
Почему Python - идеальный выбор для проекта AI и ML
Блог, которым поделился Harikrishna Kundariya в нашем сообществе Developer Nation Community.
1
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В файле kv вызовите функцию на экране 1 класса. Затем вы можете использовать функцию get_screen для доступа к другому экрану и изменить его текст в этой функции.

Вероятно, будет выглядеть примерно так: (в файле kv)

on_press: root.functionname()

(основной файл питона)

def functionname(self):
        self.manager.get_screen('scr2').ids.text.text = "whatever you want here"

Могу ли я также предложить изменить идентификатор текста, который вы меняете, на что-то другое, потому что это выглядит немного запутанным с ids.text.text

Для получения дополнительной информации о функции get_screen, если вы не уверены в этом https://medium.com/nerd-for-tech/kivy-use-get-screen-to-access-objects-from-other-screens-8d4d6f288f3

Другие вопросы по теме