7.wxPython制作一个桌面精灵

作者: 赵明嗯 | 来源:发表于2020-06-12 23:23 被阅读0次
    dog.png

    今天我们通过窗体的SetShape()函数来制作一个桌面精灵。我们制作的桌面精灵本质上还是一个窗体,只不过是一个特殊格式的窗体。我们创建一个style=wx.FRAME_SHAPED的窗体,然后利用SetShape()函数按照我们实现准备的图片的轮廓改变窗体的形状,然后在这个窗体上加载我们实现准备的图片,并加上一些简单的事件响应来实现交互,这样一个桌面精灵就出现了。

    #一个简单的桌面精灵
    import wx
    class myframe(wx.Frame):
        def __init__(self):
            self.x=100
            self.y=100
            super().__init__(parent=None,pos=(self.x,self.y),style=wx.FRAME_SHAPED|wx.STAY_ON_TOP)
            img=wx.Image("dog.png")
            self.bg=wx.Bitmap(img)
            region=wx.Region(self.bg)
            self.SetShape(region)
            self.Bind(wx.EVT_PAINT,self.onPaint)
            self.Bind(wx.EVT_MOTION, self.OnMouseMotion)
            self.Bind(wx.EVT_RIGHT_UP, self.OnRightClickEvent)
            self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftClickDown)
        def OnLeftClickDown(self, event):
            pos = event.GetPosition()
            self.pt = wx.Point(pos.x,pos.y)
        def OnRightClickEvent(self, event):
            wx.Exit()
        def OnMouseMotion(self, event):
            if event.Dragging() and event.LeftIsDown():
                pos = self.ClientToScreen(event.GetPosition())
                self.Move((pos.x-self.pt.x,pos.y-self.pt.y))
        def onPaint(self,event):
            mydc=wx.PaintDC(self)
            mydc.DrawBitmap(self.bg,0,0,True)
    myapp=wx.App()
    frame=myframe()
    frame.Show()
    myapp.MainLoop()
    
    dogg.png

    相关文章

      网友评论

        本文标题:7.wxPython制作一个桌面精灵

        本文链接:https://www.haomeiwen.com/subject/fhrotktx.html