【发布时间】:2017-03-23 22:26:58
【问题描述】:
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.scatterlayout import ScatterLayout
class ZoomWidget(ScatterLayout):
def __init__(self, **kwargs):
super(ZoomWidget, self).__init__(**kwargs)
self.add_widget(Label(text='Label'))
def on_touch_down(self, touch):
if touch.is_double_tap:
button = Button(text='Button')
self.add_widget(button)
return True
else:
return super().on_touch_down(touch)
class ZoomSpaceApp(App):
def build(self):
return ZoomWidget()
if __name__ == '__main__':
ZoomSpaceApp().run()
所以,标签似乎有效,我可以右键单击(在桌面操作系统上)创建第二个触摸位置,然后向左拖动缩放并旋转标签。但是,按钮似乎填满了整个布局,我无法缩放或旋转它。那么,在 ScatterLayout 中,如何让 Button 在默认情况下像 Label 一样?
另外,我想使用其他小部件做类似的事情,所以最一般的答案就可以了。例如,我是否将 Button 封装在某种类型的小部件(如布局)中? ZoomWidget 中显示的将是其他小部件。我的应用程序的重点是让用户通过触摸创建自己的应用程序并决定放在那里的内容(首先使用上下文菜单)。知道了这一点,有没有更好的方法来解决这个问题?
【问题讨论】:
标签: user-interface button resize kivy default