【发布时间】:2018-11-26 15:00:22
【问题描述】:
我正在尝试制作一个用于模拟简单生态系统的 kivy 应用程序,带有一种交互式地图,可以通过用户拖动来缩放和定位。我实现此目的的第一种方法是使用 Kivy Scatter 小部件,它似乎满足了这些要求。这是我的代码(为简单起见,只是带有按钮的 gui 和右侧的地图,带有大红色矩形):
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from kivy.graphics import Rectangle, Color
class GUI(BoxLayout):
board = ObjectProperty(None)
def draw(self):
with self.board.canvas:
Color(1,0,0)
Rectangle(pos=(0,0),size=(300,300))
class TestApp(App):
def build(self):
gui = GUI()
gui.draw()
return gui
if __name__=="__main__":
app = TestApp()
app.run()
还有我的 .kv 文件:
#:kivy 1.0.9
<GUI>:
board: scatter_board
orientation: 'horizontal'
spacing: 30
padding: 30
BoxLayout:
size_hint: 0.25, 1
orientation: 'vertical'
Button:
text: 'Start/Resume'
Button:
text: 'Stop'
Scatter:
id: scatter_board
size_hint: 0.75,1
但是,在这种情况下,当用户将地图拖到按钮上时,无法再单击它(单击时不会突出显示)。我试过了:
- 将 scatter 的“auto_bring_to_front”设置为 False
- 使用 scatter 和按钮的父 BoxLayout 的 'index' 属性来操作 z-index。
所以基本上我希望“地图”不要遮蔽按钮,而是保持在按钮下方。是否可以使用 Scatter 实现这种效果?还是分散的错误用例,我应该改变方法?如果是这样,你知道任何类似且可能简单的方法吗?
【问题讨论】:
-
请查看这篇文章,它将按钮/下拉列表放置在带有分散小部件 Kivy MapView - Place button widgets ontop of mapview widget 的地图视图顶部
标签: python user-interface kivy