小编典典

wxPython用于图像和按钮(可调整大小)

python

我想将这样的图像放在wx.Panel

  • 动物应该是“按钮”,这样,如果我单击它们,它们的图像将发生变化,并且如果我重新单击,图像将恢复正常(因此,可以将动物视为简单按钮,如此处的BitmapToggleButtons另一个问题所建议)

  • 如果将父面板的尺寸wx.Panel调整为较小的尺寸(例如,可以使用标准的 Windows Photo Viewerhttp://res1.windows),则应调整面板的尺寸/调整比例(所有所有子图像也都必须具有切换按钮!),保持宽高比。.microsoft.com / resbox / en / windows%207 / main / 7eaf462a-86dd-42d2-a789-7413f5472dae_63.jpg)

我仍然迷失在: 如何实现这种 可点击的 (带有切换按钮)和可 缩放的 Canvas?

在此处输入图片说明

编辑
:我从这里富有成果的事情开始,当在wxPython中调整父对象的大小时,重新缩放图像,但是现在我完全执着于如何继续(检测单击,使用直接DCPainting更新按钮?),这就是赏金的原因。


阅读 211

收藏
2021-01-20

共1个答案

小编典典

我用以下方法解决了问题:

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)
2021-01-20