首页 > 解决方案 > Kivy:我希望有不同的按钮并在按下每个按钮时显示不同的文本,有没有办法在不制作不同窗口的情况下做到这一点?

问题描述

假设我有 4 个按钮,称为 1、2、3、4,按第一个按钮我想显示文本,按第二个按钮我想显示文本 2,依此类推。

有没有办法在不为每个文本创建新窗口的情况下这样做?

我希望将代码放在 kv 文件中。

标签: python-3.xkivy

解决方案


所以当你问我做了一个脚本来改变标签只有按钮这是我的 .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()

编辑:如果有帮助,就像答案一样


推荐阅读