为什么我不能在 wxPython 中绘制两个不同的位图?
Why can't I draw onto two different bitmaps in wxPython?
我正在尝试在位图上绘制按钮 object。根据 y 位置,如果 y 位置在 bmp1 的高度值范围内,则应在 bitmap1 上绘制,否则应在 bitmap2 上绘制。
由于某种原因,这不起作用:
wx.Button(bitmap1 if ypos <= bmp1.GetHeight() else bitmap2, label='Run', id=i, pos=(xpos, ypos))
我只能在一个wx.StaticBitmap图像或面板上绘制按钮。图片 parents 是面板。
如果我想直接在面板上的位图 或 之间切换,这很好用。
什么给了?
注意:
我设法使用 PIL 解决了这个问题,创建了一个足够大的动态图像来容纳我生成的按钮(一个连续的 y-size,根据它们的数量和位置),但是这个 idea/code 应该仍然有效。
如果我将 'bitmap2' 值替换为面板,并将绘制在面板上的 bitmap2 图像移动一点,然后我看到程序在 bitmap2 下面绘制。为什么?图片放的和bitmap1一模一样,按按钮在bitmap1上画没有问题? :O
我发现问题了:
按钮的父对象应根据父对象的尺寸获取 ypos,而不是在框架上绘制的位置,如下所示:
wx.Button(bitmap1 if ypos <= bmp1.GetHeight() else bitmap2, label='Run {i}', id=i, pos=(80, ypos if ypos <= bmp1.GetHeight() else ypos-img_height))
ypos 如果 ypos <= bmp1.GetHeight() 否则 ypos-img_height
终于!
我正在尝试在位图上绘制按钮 object。根据 y 位置,如果 y 位置在 bmp1 的高度值范围内,则应在 bitmap1 上绘制,否则应在 bitmap2 上绘制。 由于某种原因,这不起作用:
wx.Button(bitmap1 if ypos <= bmp1.GetHeight() else bitmap2, label='Run', id=i, pos=(xpos, ypos))
我只能在一个wx.StaticBitmap图像或面板上绘制按钮。图片 parents 是面板。
如果我想直接在面板上的位图 或 之间切换,这很好用。
什么给了?
注意: 我设法使用 PIL 解决了这个问题,创建了一个足够大的动态图像来容纳我生成的按钮(一个连续的 y-size,根据它们的数量和位置),但是这个 idea/code 应该仍然有效。
如果我将 'bitmap2' 值替换为面板,并将绘制在面板上的 bitmap2 图像移动一点,然后我看到程序在 bitmap2 下面绘制。为什么?图片放的和bitmap1一模一样,按按钮在bitmap1上画没有问题? :O
我发现问题了:
按钮的父对象应根据父对象的尺寸获取 ypos,而不是在框架上绘制的位置,如下所示:
wx.Button(bitmap1 if ypos <= bmp1.GetHeight() else bitmap2, label='Run {i}', id=i, pos=(80, ypos if ypos <= bmp1.GetHeight() else ypos-img_height))
ypos 如果 ypos <= bmp1.GetHeight() 否则 ypos-img_height
终于!