如何在Kivy的控制台上打印按钮文本值

时间:2015-04-29 15:02:17

标签: kivy

我的应用程序只有一个按钮,其文本是从1到9的随机数。我想在on_press上的控制台上打印按钮文本。实际上,我已经最小化了我的问题,我想将值与变量进行比较,如果button.text = 5,则执行其他do_something_else。

我的尝试:

#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')

from random import random
from random import choice
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.properties import StringProperty

Builder.load_string("""
<Highest>:
    GridLayout:
        cols: 1
        Button:
            text: root.r1c2
            on_press: root.new()
""")

class Highest(Screen):
    r1c2 = StringProperty(str(int(random()*10)))
    def new(self):
        print self.text


# Create the screen manager
sm = ScreenManager()
sm.add_widget(Highest(name='Highest'))

class TestApp(App):

    def build(self):
        return sm

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

但是这会给出错误。

1 个答案:

答案 0 :(得分:0)

你没有说出你得到的错误,但是一个明显的问题是self.text没有退出。您是在Highest(Screen)上呼叫的,而不是Button。要从python访问kv对象,通常会使用id标记它们,然后使用root_widget.ids.id_of_widget (see docs)。另一种方法是使用Kivy Properties。

由于你已经将Kivy属性绑定到按钮的文本,你可以打印出来:

print self.r1c1