我正在学习使用Kivy,所以我浏览了Pong教程,开始乱搞代码。所以,我去掉了所有的东西,除了弹跳球,并决定根据需要生成多个球。我遇到的问题是,虽然当应用程序已经运行时,我可以将球放在我想要的地方(例如,在触摸时添加球可以正常工作),但当我在应用程序build()中添加球时,球的位置不正确。这是我的密码。放置在接触位置的球,正确地从中心开始。但是build()中添加的球从左下角开始。为什么?我想添加更多具有不同属性的移动小部件,但我似乎不知道如何将它们放置在应用程序启动时。
#:kivy 1.0.9 <World>: canvas: Ellipse: pos: self.center size: 10, 10 <Agent>: size: 50, 50 canvas: Ellipse: pos: self.pos size: self.size
from random import randint from kivy.app import App from kivy.uix.widget import Widget from kivy.properties import NumericProperty, ReferenceListProperty, ListProperty from kivy.vector import Vector from kivy.clock import Clock class World(Widget): agents = ListProperty() def add(self): agent = Agent() agent.center = self.center agent.velocity = Vector(4, 0).rotate(randint(0, 360)) self.agents.append(agent) self.add_widget(agent) def on_touch_down(self, touch): self.add() def update(self, dt): for agent in self.agents: agent.move() if agent.y < 0 or agent.top > self.height: agent.velocity_y *= -1 if agent.x < 0 or agent.right > self.width: agent.velocity_x *= -1 class Agent(Widget): velocity_x = NumericProperty(0) velocity_y = NumericProperty(0) velocity = ReferenceListProperty(velocity_x, velocity_y) def move(self): self.pos = Vector(*self.velocity) + self.pos class WorldApp(App): def build(self): world = World() # add one ball by default world.add() Clock.schedule_interval(world.update, 1.0/60.0) return world if __name__ == '__main__': WorldApp().run()
找到了答案。默认的小部件大小是100,100。当我添加初始球时,世界小部件没有呈现,因此具有默认大小。但是可以在Widget构造函数中传递窗口大小。所以将World实例化改为
world = World(size=Window.size)
解决了问题
我试图在屏幕中间构造一个窗口小部件。我没有使用pos_hint或size_hint,因为我将在以后更改小部件的位置,但是当我构建小部件时,它的大小和位置不正确。这是我的密码: 为什么小部件的大小不等于窗口大小的十分之一,为什么它的中心在窗口的右上角?
我在kivy中添加或删除小部件时遇到一些困难。情况就是这样: 主窗体应该包含三个小部件中的两个,即Widget1、Widget2和Widget3。按下Widget1的按钮,Widget2应该被删除,Widget3应该出现。 这是main.py文件: 这是.kv文件: 在类表单中,我检查Widgets1和2是否为该类的子类: 我得到: 因此,当我尝试删除现有子项并添加新子项时,我得到: 有人能帮忙吗
问题内容: 我正在使用Kivy做proyect,但复选框有问题。起初,我试图像python编码那样做程序(我知道它不是很干净,但是我理解得更多),并且我有了使用此编码的第一个屏幕: 例如,我想选择两个或三个选项,然后像选择类型一样保存到下一个屏幕。如果有人知道该怎么做并为下一个屏幕保存信息,那将对我有很大帮助,因为我拥有所有选项的下一个屏幕代码,但是我想在第一个屏幕中进行预选择,然后仅使用选择了。
我试着用Kivy模仿flappy birds,但目前我的处境很艰难。问题是我不知道如何在视图中创建多个小部件。 现在我的kv文件中有: 目前我能够制作单列,所以问题是如何制作才能有多列?
我正在使用Kivy python库。 我定义了两个小部件。 当程序运行时,我运行第一个小部件。 当按下widgets按钮时,我希望它消失并被第二个widget替换。 这是两个小部件的. kv 我的主python文件运行应用程序,并返回第一个小部件 我的第一个小部件有一个回调。这就是问题代码所属的位置 这里的想法是有一个用户界面管理器。此管理器不像树那样运行UI,而是像列表和堆栈一样运行UI。该列表
问题内容: 我现在正在使用Windows,我想问问是否有什么好的工具可以在Windows中打包适用于Android的kivy应用程序,还是必须使用Linux发行版? 还有反正要为python 3.3.2(最新)使用kivy吗? 问题答案: 我现在正在使用Windows,我想问问是否有什么好的工具可以在Windows中打包适用于Android的kivy应用程序,或者我没有使用Linux发行版? 不幸