【发布时间】:2017-07-19 19:21:43
【问题描述】:
我对 Python 和 Kivy 的经验很少。我正在帮助我的小侄子使用这两者来构建游戏。我们被困在看似简单的事情上。
考虑以下代码:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import NumericProperty, ReferenceListProperty,\
ObjectProperty
from kivy.vector import Vector
from kivy.clock import Clock
from random import randint
from kivy.graphics import Color, Ellipse, Rectangle
from kivy.uix.floatlayout import FloatLayout
import math
class Fly(Widget):
pass
class Stick(Widget):
pass
class FlyBox(Widget):
pass
class GameArea(FloatLayout):
pass
class FlyApp(App):
def build(self):
gameArea = GameArea()
flyBox = FlyBox()
flyBox.canvas.add(Rectangle(pos_hint={'x': 0, 'y': .3}, size_hint=(1, .3)))
flyBox.canvas.add(Color(1, 0, 0))
gameArea.add_widget(flyBox)
return gameArea
if __name__ == '__main__':
FlyApp().run()
它产生以下输出:
我们想要实现的是:
- FlyBox 的高度应该是 GameArea 高度的 1/3。
- FlyBox 的宽度应与 GameArea 的宽度相同。
- FlyBox 的 x 坐标应为 0,y 坐标应为 GameArea 高度的 1/3。
即如果将游戏区域划分为 3 个大小相等的水平带,则 FlyBox 应该是中间带。并且随着游戏区域大小的变化(由于窗口大小的调整),FlyBox 的大小和位置也会相对变化。
我们正在尝试避免使用 .kv 文件,而是使用 Python 执行所有操作。
【问题讨论】:
标签: python python-3.x kivy