为什么我不能在 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

终于!