我想将这样的图像放在wx.Panel:
wx.Panel
动物应该是“按钮”,这样,如果我单击它们,它们的图像将发生变化,并且如果我重新单击,图像将恢复正常(因此,可以将动物视为简单按钮,如此处的BitmapToggleButtons另一个问题所建议)
BitmapToggleButtons
如果将父面板的尺寸wx.Panel调整为较小的尺寸(例如,可以使用标准的 Windows Photo Viewer :http://res1.windows),则应调整面板的尺寸/调整比例(所有所有子图像也都必须具有切换按钮!),保持宽高比。.microsoft.com / resbox / en / windows%207 / main / 7eaf462a-86dd-42d2-a789-7413f5472dae_63.jpg)
我仍然迷失在: 如何实现这种 可点击的 (带有切换按钮)和可 缩放的 Canvas?
编辑 :我从这里富有成果的事情开始,当在wxPython中调整父对象的大小时,重新缩放图像,但是现在我完全执着于如何继续(检测单击,使用直接DCPainting更新按钮?),这就是赏金的原因。
我用以下方法解决了问题:
import wx from floatcanvas import FloatCanvas class MyPanel(wx.Panel): def __init__(self, parent): super(MyPanel, self).__init__(parent) self.sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(self.sizer) # add a canvas self.Canvas = FloatCanvas.FloatCanvas(self, BackgroundColor = "LIGHT GREY") self.Canvas.Bind(wx.EVT_SIZE, self.OnSize) self.sizer.Add(self.Canvas, -1, flag=wx.EXPAND) # add a toggle button image_dis = wx.Image('file_disabled.png') image_ena = wx.Image('file_enabled.png') img_dis = self.Canvas.AddScaledBitmap(image_dis, (x,-y), Height=image_dis.GetHeight(), Position = 'tl') img_ena = self.Canvas.AddScaledBitmap(image_ena, (x,-y), Height=image_ena.GetHeight(), Position = 'tl') img_dis.other = img_ena img_ena.other = img_dis img_ena.Visible = False # bind the toggle button event img_dis.Bind(FloatCanvas.EVT_FC_LEFT_UP, self.OnToggle) img_ena.Bind(FloatCanvas.EVT_FC_LEFT_UP, self.OnToggle) def OnToggle(self, button): button.other.Visible = True button.Visible = False self.Canvas.Draw(True) def OnSize(self, event): event.Skip() wx.CallLater(1, self.Canvas.ZoomToBB)