【问题标题】:reload textlabel kivy python重新加载 textlabel kivy python
【发布时间】:2018-10-05 06:25:07
【问题描述】:

您好,我想要一个将值 (num) 更改为随机整数的按钮。 使 num 变量改变 labeltext 的全局值。我遇到的问题是我无法将textlabel 放入回调函数中,也无法重新加载num 变量。正如我所看到的,labeltext 加载的值为 num = 0,但它并没有按照我的意愿改变。

有没有办法定义一个函数,使 button-press 上的 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()

在此先感谢,我希望这对其他有同样问题的人也有帮助。

【问题讨论】:

    标签: python label global-variables kivy


    【解决方案1】:

    由于 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()
    

    输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-08
      • 2019-04-22
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2018-08-29
      • 2015-10-03
      • 1970-01-01
      相关资源
      最近更新 更多