我正在使用Kivy框架开发适用于Linux桌面的应用程序。我正在尝试将“散布”大小设置为与窗口大小相同。
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.scatter import Scatter
from kivy.graphics import Color, Rectangle
class MyScatter(Scatter):
def __init__(self, *args, **kwargs):
super(MyScatter, self).__init__(*args, **kwargs)
self.size_hint=(None, None)
self.size=(Window.width, Window.height)
with self.canvas:
Color(1, 0, 0)
Rectangle(pos=self.pos, size=(100, 200))
class ScatterApp(App):
def build(self):
return MyScatter()
ScatterApp().run()
当我运行代码时,分散会立即反映我的鼠标动作并移动矩形。 当我最大化窗口时,它会稍作反应,我只按一下按钮,但就好像我用了两个手指一样,也会缩放和旋转。
当我使用固定大小(即self.size=(100, 200)
)时,两种情况下的行为都是相同的,并且在按下按钮后会出现分散移动。
将大小作为参数传递不会改变任何内容。
我不使用kv语言。
“鼠标”是触摸板。
答案 0 :(得分:0)
不确定鼠标是否有问题,但是MyScatter
小部件将默认填充窗口。您的代码未反映正确的大小。试试这个版本:
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.scatter import Scatter
from kivy.graphics import Color, Rectangle
from kivy.clock import Clock
class MyScatter(Scatter):
def __init__(self, *args, **kwargs):
super(MyScatter, self).__init__(*args, **kwargs)
Clock.schedule_once(self.show_size, 0.1)
def show_size(self, *args):
with self.canvas:
Color(1, 0, 0)
Rectangle(pos=self.pos, size=self.size)
class ScatterApp(App):
def build(self):
return MyScatter()
if __name__=="__main__":
ScatterApp().run()