You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Python BeeWare项目中如何获取toga.Canvas()的尺寸?

在Toga中获取Canvas尺寸绘制水平矩形

要获取toga.Canvas的宽度和高度,直接访问它的width和height属性即可,这两个属性返回的是适配平台的逻辑像素值。

直接获取尺寸绘制自适应矩形

修改你的redraw_canvas方法,把固定宽度100替换为Canvas宽度减去左右边距(比如你设置的x=4,左右各留4像素的话,就是self.canvas.width - 8):

def redraw_canvas(self):
    x = 4; y = 4;  
    # 获取Canvas的实际宽度,减去左右边距
    rect_width = self.canvas.width - 8
    for i in range(7):  
        with self.canvas.context.Fill(color=self.clRowBkg) as fill:
            fill.rect(x, y, rect_width, self.row_height)
        y += self.row_height + 4

监听Canvas尺寸变化(可选)

如果Canvas是自适应父容器大小的(比如用flex布局),窗口或父容器尺寸变化时,Canvas的尺寸也会跟着变。这时候可以给Canvas绑定on_resize事件,自动触发重绘:

# 初始化Canvas时绑定事件
self.canvas = toga.Canvas()
self.canvas.on_resize = self.redraw_canvas

这样每次Canvas尺寸改变,都会自动调用redraw_canvas,保证矩形始终适配Canvas宽度。

内容的提问来源于stack exchange,提问作者Marus Gradinaru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:39:49