微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我不能在 wxPython 中绘制两个不同的位图?

如何解决为什么我不能在 wxPython 中绘制两个不同的位图?

我正在尝试在位图对象上绘制一个按钮。根据 y 位置,如果 y 位置在 bmp1 的高度值内,则应在 bitmap1 上绘制,否则应在 bitmap2 上绘制。 由于某种原因,这不起作用:

wx.Button(bitmap1 if ypos <= bmp1.GetHeight() else bitmap2,label='Run',id=i,pos=(xpos,ypos))

我只能在一个 wx.StaticBitmap 图像或面板上绘制按钮。图片父母是面板。

如果我想在位图之间直接切换到面板上,这很好用。

是什么?

注意: 我设法使用 PIL 创建了一个足够大的动态图像来解决这个问题,以容纳我生成的按钮(一个连续的 y 大小,根据它们的数量和位置),但是这个想法/代码应该仍然有效。

如果我替换面板的'bitmap2'值,并将面板上绘制的位图2图像移动一点,然后我看到程序在位图2下方绘制。为什么?图片和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 if ypos

终于!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。