在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
相关产品推荐
相关产品推荐

