文档提供了an example如何使用DragBehaviour,只要我使用pos
来指示小部件的位置,就可以使用它,但是如果我使用pos_hint
则不行。
from kivy.uix.label import Label
from kivy.app import App
from kivy.uix.behaviors import DragBehavior
from kivy.lang import Builder
kv = '''
<DragLabel>:
# Define the properties for the DragLabel
drag_rectangle: self.x, self.y, self.width, self.height
drag_timeout: 10000000
drag_distance: 0
FloatLayout:
DragLabel:
##################################
##### Comment this line and works!
pos_hint: {'x': 0.5, 'y':0.5}
size_hint: 0.25, 0.2
text: 'Drag me'
'''
class DragLabel(DragBehavior, Label):
pass
class TestApp(App):
def build(self):
return Builder.load_string(kv)
TestApp().run()
如何将pos_hint
与DragBehaviour
一起使用?由于Kivy绑定属性的方式,它们是不兼容的吗?
答案 0 :(得分:0)
根据&#34;在Kivy中创建应用程序&#34;作者:Dusty Phillips:
布局根据
pos
设置pos_hint
;它们不是严格独立的价值观。对于size_hint
也可以这样说,这就是为什么布局需要您明确将size_hint
设置为None
,如果您想直接操作size
。
换句话说,FloatLayout
和DragBehavior
都要设置小部件的pos
,并且由于布局最后一次,它最终会获奖。但FloatLayout
根据pos
设置pos_hint
,如果后者未初始化,则不会尝试设置size
。同样,如果您尝试设置FloatLayout
,size_hint
会使用默认(1,1)
size_hint
来否决您,除非您首先明确设置(None,None)
到<div class="inner"><h2>Old heading</h2></div>
。