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

How to print button text value on console in 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()

但这会出错。

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

因为你已经有一个 Kivy 属性 绑定到按钮的文本,你可以打印出来:

print self.r1c1