重新加载文本标签kivy python

重新加载文本标签kivy python,python,label,global-variables,kivy,Python,Label,Global Variables,Kivy,你好,我想有一个按钮,改变一个值(num)为随机整数。 因此num变量会更改labeltext的全局值。我遇到的问题是,我不能将textlabel放入回调函数中,也不能重新加载num变量。在我看来,labeltext加载的值为num=0,但它并没有按我所希望的那样改变 是否有一种方法可以定义一个函数,在按下按钮时更改labeltext num = 0 array=["lorem","fdw","abcd","icecream","onemore","sword"] labeltext = arr

你好,我想有一个按钮,改变一个值(num)为随机整数。 因此num变量会更改labeltext的全局值。我遇到的问题是,我不能将textlabel放入回调函数中,也不能重新加载num变量。在我看来,labeltext加载的值为num=0,但它并没有按我所希望的那样改变

是否有一种方法可以定义一个函数,在按下按钮时更改labeltext

num = 0
array=["lorem","fdw","abcd","icecream","onemore","sword"]
labeltext = array[num]

class word(Widget):

    def callback(self, btn_instance):
        global num
        num = randint(0,5)
        return num

textlabel =Label(text=labeltext,font_size=10)


btnr = Button(text='change the textlabel',pos=(0, 100))


class wordApp(App):

    def build(self):

        gc = word()
        gc.add_widget(btnr)
        global gc
        btnr.bind(on_press=gc.callback)
        gc.add_widget(textlabel)
        return gc


if __name__ == '__main__':
    wordApp().run()
提前感谢,我希望这也能帮助其他有同样问题的人。

因为labeltext在顶部/开头更新,所以在生成每个新的随机整数后,您需要再次更新它

例子 main.py 输出

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.label import Label

from random import randint

num = 0
array = ["lorem", "fdw", "abcd", "icecream", "onemore", "sword"]
labeltext = array[num]


class word(Widget):

    def __init__(self, **kwargs):
        super(word, self).__init__(**kwargs)
        self.textlabel = Label(text=labeltext, font_size=10)
        btnr = Button(text='change the textlabel', pos=(0, 100))
        btnr.bind(on_press=self.callback)

        self.add_widget(btnr)
        self.add_widget(self.textlabel)

    def callback(self, btn_instance):
        global num
        global labeltext
        print("\tnum={0}, labetext={1}".format(num, labeltext))
        num = randint(0, 5)
        labeltext = array[num]
        print("\tnum={0}, labetext={1}".format(num, labeltext))
        self.textlabel.text = labeltext


class wordApp(App):

    def build(self):
        return word()


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