Киви: Я хочу иметь разные кнопки и отображать разный текст при нажатии каждой. Есть ли способ сделать это без создания другого окна? - PullRequest
0 голосов
/ 27 мая 2020

Допустим, у меня есть 4 кнопки, называемые 1,2,3,4, и при нажатии на первую я хочу отобразить текст один, при нажатии второй я хочу отобразить текст два и т. Д.

Есть ли способ сделать это, не создавая новые windows для каждого текста?

Я бы предпочел иметь код в файле kv.

1 Ответ

1 голос
/ 27 мая 2020

Итак, как вы и просили, я создал сценарий для изменения метки только с помощью кнопок. Это мой файл .py с 4 функциями. Все, что он сделает, это когда вы нажмете кнопку с соответствующим номером. метка также изменится ... Надеюсь, вам понравится

import kivy
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.popup import Popup
from kivy.config import Config
from kivy.uix.button import Button
from kivy.core.window import Window
from kivy.uix.textinput import TextInput
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.dropdown import DropDown
from kivy.core.text import Text
from kivy.core.text.markup import *
from kivy.properties import ObjectProperty
from kivy.core.window import Window
import os
import sqlite3 as sql



class Mainscreen(Screen):
    dom = ObjectProperty(None)

    def changeit(self):
        self.dom.text = "1"

    def changeit2(self):
        self.dom.text = "2"

    def changeit3(self):
        self.dom.text = "3"

    def changeit4(self):
        self.dom.text = "4"


class WindowManager(ScreenManager):
    pass

kv = Builder.load_file('kv.kv')

class TESTApp(App):
    def build(self):
        return kv 


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

Теперь мой файл kivy (.kv)

WindowManager:
    Mainscreen:


<Mainscreen>:

    name: "main"
    dom: change

    Label:
        id: change
        text: "Hello there"
        font_size: 52


    GridLayout:
        cols:2
        size_hint: 0.2,0.2
        pos_hint: {'x': 0.25, 'y':0.2}

        Button:
            text: "1"
            on_release: root.changeit()


        Button:
            text: "2"
            on_release: root.changeit2()

        Button:
            text: "3"
            on_release: root.changeit3()

        Button:
            text: "4"
            on_release: root.changeit4()

Изменить: как ответ, если это помогло

...