【发布时间】:2021-03-30 15:13:56
【问题描述】:
我正在尝试在位图对象上绘制一个按钮。根据 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' 值代替面板,并将面板上绘制的 bitmap2 图像移动一点,然后我看到程序在 bitmap2 下方绘制。为什么?图像的放置方式和bitmap1一模一样,bitmap1用按钮在上面绘制没有问题吗? :O
【问题讨论】:
-
坦率地说,我很惊讶你
can在按钮定义中包含if语句,这导致我很困惑,但你不能只将任何小部件设为child任何其他小部件。parent小部件必须能够处理child小部件,例如wx.Frame和wx.Panel。我已准备好对此进行更正,因为您已经设法完成了我认为不可能的事情。 ;) -
@RolfofSaxony 是否有足够的理由拒绝投票?无论如何 - 你可以在这里做 ifs,如你所见。但是我的问题是绘图似乎只能在一张图片和面板上完成,而不能在一张图片或另一张图片上完成。我正在这样做 - 指定要绘制的父级,但如果一个已完成,它似乎不想在两个图像上绘制。我正在生成 n 个按钮。有什么帮助吗?
-
@RolfofSaxony 如果对思考过程有帮助,我添加了一个带有更多上下文的注释
-
cmet 的人不一定是反对者。这不是我的反对票。我对
if的声明太惊讶了,根本不考虑投票。