7.wxPython制作一个桌面精灵

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容