喝卤小夫 2023-01-18 15:51 采纳率: 48.1%
浏览 27
已结题

关于kivy绘制图形的问题

我写了一个简单的kivy程序(如图),
就是在窗口上绘制了一个矩形,
我想要的效果是 这个矩形会随着我拖动窗口的大小而改变大小,
而现在我的代码是一个固定的矩形,
请教各位一下 如何才能达到我要的效果?

img

  • 写回答

1条回答 默认 最新

  • m0_54204465 2023-01-18 17:21
    关注

    如果你想要矩形随着窗口大小改变而改变大小,你需要在Kivy程序中绑定一些事件处理器。

    为了实现这个效果,你需要在BoxLayoutWidget类中添加on_size函数。

    该函数将在窗口大小改变时被调用,并且在这个函数中你可以重新设置矩形的大小。

    首先,你需要在BoxLayoutWidget类中添加一个矩形变量,然后在_init_()函数中创建一个新的矩形,并将其存储在这个变量中。

    然后,你需要在on_size()函数中设置矩形的size属性,以便它随着窗口大小改变而改变。

    示例代码如下:

    class BoxLayoutWidget(BoxLayout):
    def init(self, **kwargs):
    super().init(**kwargs)
    with self.canvas:
    Color(1, .5, .8, 1)
    self.rect = Rectangle(pos=(100, 100), size=(400, 100))
    def on_size(self, *args):
        self.rect.size = self.size
    class MYApp(App):
    def build(self):
    return BoxLayoutWidget()
    
    MyApp().run()
    

    这样运行你的程序,你应该能看到矩形随着窗口大小改变而改变大小了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月19日
  • 已采纳回答 1月18日
  • 创建了问题 1月18日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分