【发布时间】:2018-12-10 11:29:14
【问题描述】:
我正在学习使用 Python 和 Kivy 进行编码。
我想获得一个按钮(button1)的位置,它在一个boxlayout中,相对于窗口。但是,当我打印button1.pos 或button1.to_window(*button1.pos) 时,我得到[0, 0],这显然不是按钮的位置。我假设在我获得位置时按钮位置尚未更改,但我不确定从哪里可以放置此代码,以便在更改按钮位置后执行它(可能是通过布局),如果这根本就是问题所在。
正如您在我的代码中看到的,我试图从on_start 方法中获取位置,希望这能解决我的问题,但我得到了相同的结果。
这是我的代码:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
class Example(App):
def build(self):
return root
def on_start(self):
print("Position: " + str(button1.pos))
print("Position2: " + str(button1.to_window(*button1.pos)))
root = BoxLayout()
root.orientation = 'vertical'
button1 = Button(text = "Button1")
button2 = Button(text = "Button2")
root.add_widget(button1)
root.add_widget(button2)
Example().run()
谢谢
【问题讨论】:
-
@U9-Forward 问题是它过早地计算位置,即在窗口及其组件被渲染之前