我基本上遇到的问题是,唯一的“可抓取”分散区域完全由我正在查看程序的窗口大小定义,而不是散射的大小。在
下面是该bug的一个有效示例:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.scatter import Scatter
class AppFrame(GridLayout):
def __init__(self,**kwargs):
super(AppFrame,self).__init__(**kwargs)
self.myscatter=Scatter(
width=2000,
height=200,
do_rotation=False,
do_scale=True,
do_translation=True)
self.add_widget(self.myscatter)
self.layout=GridLayout(cols=30,width=2000,height=200)
self.myscatter.add_widget(self.layout)
for i in range(300):
self.layout.add_widget(Button(text=str(i)))
class TestApp(App):
def build(self):
return AppFrame(cols=3)
if __name__ == '__main__':
TestApp().run()
在我的屏幕上,如果我使用散点向右移动(随着按钮的增加),我无法抓取超过按钮10-11的任何内容。如果我调整我的屏幕,我可以抓到更远一点。如果我把屏幕变小,可抓取的区域会缩小,甚至可能无法到达。我到底该怎么解决这个问题?在
我正在使用Kivy环境和Android模拟器,所以我有一个相当大的屏幕。不幸的是,如果我把这个移到手机上,屏幕大小会明显缩小,使这个错误有效地禁用滚动。在
(顶层布局用于添加菜单。本例不包括实际菜单,因为不需要重新创建错误)
我想弄清楚的主要是:
更新: 在George Bou的评论之后,我将问题隔离到了分散的BBOX中。创建时,散点bbox的大小为2000x200。但是,在创建窗口之后,它是800x600(弹出屏幕的默认大小)。在
令人恼火的是,我不知道怎么解决这个问题。如果我在任何一点(例如,在按钮中)更改散点的宽度/高度,每当发生平移/缩放时,它会立即重置回800x600。有人知道如何让分散停止自动调整其bbox到窗口的大小吗?在
好吧。我想不出一种方法来处理香草散点对象本身,但我做了一个工作似乎足够好的解决方法。在
基本上,scatter控制通过其类中的
collide_point
方法获取的内容。这个类引用它自己的宽度/高度(这是令人恼火的不变的)。因此,我创建了一个自定义散点类,用可更改的东西覆盖collide_point方法。在要使用它,我只需确保在创建类的实例之后立即设置边界(
custSetBounds
)。在基维真的让我想念金特。。。在
我自己也碰到过。添加size_hint=(None,None)以阻止它使用windows维度。在
相关问题 更多 >
编程相关推荐