【发布时间】:2016-07-20 10:02:36
【问题描述】:
我是编程新手,并决定在 Kivy 中创建一个游戏。
我遇到了一个非常简单的问题。如果有一个按钮和一个显示分数的标签,我如何使用on_press 事件来增加分数?
例如当按下按钮时,分数变为 1,依此类推。
另外,将所有内容都写在 Python 文件中更好还是我也应该使用 kv 文件?
【问题讨论】:
我是编程新手,并决定在 Kivy 中创建一个游戏。
我遇到了一个非常简单的问题。如果有一个按钮和一个显示分数的标签,我如何使用on_press 事件来增加分数?
例如当按下按钮时,分数变为 1,依此类推。
另外,将所有内容都写在 Python 文件中更好还是我也应该使用 kv 文件?
【问题讨论】:
您可以只使用 python 或 kv 语言。这完全取决于你。 在这种情况下,我们使按钮调用函数,增加标签文本。 我举两个例子。一种只用python,一种用kivy语言。
这只是python中的一个例子:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
class Game(BoxLayout):
def __init__(self,**kwargs):
super(Game,self).__init__(**kwargs)
self.count = 0
self.orientation = "vertical"
self.button = Button(on_press=self.increment, text="Increment")
self.label = Label(text="0")
self.add_widget(self.button)
self.add_widget(self.label)
def increment(self,*args):
self.count += 1
self.label.text = str(self.count)
class MyApp(App):
def build(self):
return Game()
和使用 python 和 kivy 语言的相同应用程序。
Python 文件:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty
class Game(BoxLayout):
label_text = StringProperty()
def __init__(self,**kwargs):
super(Game,self).__init__(**kwargs)
self.count = 0
self.label_text = str(self.count)
def increment(self,*args):
self.count += 1
self.label_text = str(self.count)
print self.label_text
class MyApp(App):
def build(self):
return Game()
MyApp().run()
还有 my.kv 文件:
#:kivy 1.9.1
<Game>:
orientation: "vertical"
Button:
text: "Increment"
on_press: root.increment()
Label:
text: root.label_text
【讨论】: