【问题标题】:How to print button text value on console in Kivy如何在 Kivy 的控制台上打印按钮文本值
【发布时间】:2015-04-30 00:41:18
【问题描述】:

我的应用程序只有一个按钮,其文本是从 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()

但这会产生错误。

【问题讨论】:

    标签: kivy


    【解决方案1】:

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

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

    print self.r1c1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2017-11-19
      • 2016-06-15
      • 1970-01-01
      • 2020-12-09
      相关资源
      最近更新 更多