当前位置: 首页 > 面试题库 >

如何在wx中制作自定义按钮?

佟云
2023-03-14
问题内容

我想在wxPython中创建一个自定义按钮。我应该从哪里开始,应该怎么做?


问题答案:

这是一个骨架,您可以用来绘制完全自定义的按钮,其构想取决于它的外观或行为

class MyButton(wx.PyControl):

    def __init__(self, parent, id, bmp, text, **kwargs):
        wx.PyControl.__init__(self,parent, id, **kwargs)

        self.Bind(wx.EVT_LEFT_DOWN, self._onMouseDown)
        self.Bind(wx.EVT_LEFT_UP, self._onMouseUp)
        self.Bind(wx.EVT_LEAVE_WINDOW, self._onMouseLeave)
        self.Bind(wx.EVT_ENTER_WINDOW, self._onMouseEnter)
        self.Bind(wx.EVT_ERASE_BACKGROUND,self._onEraseBackground)
        self.Bind(wx.EVT_PAINT,self._onPaint)

        self._mouseIn = self._mouseDown = False

    def _onMouseEnter(self, event):
        self._mouseIn = True

    def _onMouseLeave(self, event):
        self._mouseIn = False

    def _onMouseDown(self, event):
        self._mouseDown = True

    def _onMouseUp(self, event):
        self._mouseDown = False
        self.sendButtonEvent()

    def sendButtonEvent(self):
        event = wx.CommandEvent(wx.wxEVT_COMMAND_BUTTON_CLICKED, self.GetId())
        event.SetInt(0)
        event.SetEventObject(self)
        self.GetEventHandler().ProcessEvent(event)

    def _onEraseBackground(self,event):
        # reduce flicker
        pass

    def _onPaint(self, event):
        dc = wx.BufferedPaintDC(self)
        dc.SetFont(self.GetFont())
        dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
        dc.Clear()
        # draw whatever you want to draw
        # draw glossy bitmaps e.g. dc.DrawBitmap
        if self._mouseIn:
            pass# on mouserover may be draw different bitmap
        if self._mouseDown:
            pass # draw different image text


 类似资料:
  • 问题内容: 我要实现ActionBar必须如下所示的自定义: 所以问题: 如何实现类似自定义视图的按钮:仅显示一些图像? 如何在顶部绘制一条线? 以及如何实现不带分隔线的按钮:在上添加标签或添加什么? 问题答案: 如果要使用ActionBarAPI,这几乎与你将获得的接近。我不确定你是否可以在ActionBar不进行奇怪的Window黑客操作的情况下在其上方放置一个色带,这是不值得的。至于更改Me

  • 我想实现定制的,它必须如下所示: 所以问题是: 如何实现自定义视图这样的按钮:只是一些图像

  • 我目前正在使用itext-pdf生成PDF。除此之外,我还使用JFreeChart在上面创建图表。我已经创建了一个爆炸效果的甜甜圈图表,它看起来像这样。 然而,我想创建一个甜甜圈图,看起来更像这样。 我想让某些部分脱颖而出,但不要完全从甜甜圈图表中分离出来。我非常感谢关于如何实现这一目标的投入。

  • 我做了,有一个按钮,我想在通知和按钮点击上执行两个不同的

  • TensorFlow GraphDef based models (typically created via the Python API) may be saved in one of following formats: TensorFlow SavedModel Frozen Model Session Bundle Tensorflow Hub module All of above f

  • 我正在使用Sherlock库,我也用自己实现。我的问题是我在菜单中添加了两个项目,现在我想要1个项目在actionbar的左边,第二个在actionbar的右边。怎么做?

  • 网上搜索到cpp代码制作自定义的定时器,我制作了测试用的项目,仓库是:https://gitee.com/chanchaw/custom-timer-cc.git 测试下来发现在 main 函数中启动定时任务后,下面的 cout 没有输出到控制台中,是不是意味着定时任务没有创建子线程执行?如果是的话要如何修改代码?