python

超轻量级php框架startmvc

wxpython绘制圆角窗体

更新时间:2020-08-07 17:06:01 作者:startmvc
本文实例为大家分享了wxpython绘制圆角窗体的具体代码,供大家参考,具体内容如下#-*-coding

本文实例为大家分享了wxpython绘制圆角窗体的具体代码,供大家参考,具体内容如下


# -*- coding:gbk -*-
 
import wx
 
class RCDialog(wx.Dialog):
 def __init__(self,parent=None,size=wx.DefaultSize):
 wx.Dialog.__init__(self, parent, -1, size=size,
 style=wx.FRAME_SHAPED |
 wx.SIMPLE_BORDER |
 wx.FRAME_NO_TASKBAR |
 wx.STAY_ON_TOP)
 
 self.Centre( wx.BOTH)
 
 # linux平台
 if wx.Platform == "__WXGTK__":
 self.Bind(wx.EVT_WINDOW_CREATE, self.SetBalloonShape)
 else:
 self.SetBalloonShape()
 
 
 
 self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
 self.Bind(wx.EVT_MOTION, self.OnMouseMove)
 self.Bind(wx.EVT_RIGHT_UP, self.OnRightUp)
 
 def OnLeftDown(self, event):
 pos = event.GetPosition()
 x, y = self.ClientToScreen(event.GetPosition())
 ox, oy = self.GetPosition()
 dx = x - ox
 dy = y - oy
 self.delta = ((dx, dy))
 
 def OnMouseMove(self, event):
 if event.Dragging() and event.LeftIsDown():
 x, y = self.ClientToScreen(event.GetPosition())
 fp = (x - self.delta[0], y - self.delta[1])
 self.Move(fp)
 
 def OnRightUp(self, evt):
 self.Close()
 
 def SetBalloonShape(self, event=None):
 width, height = self.GetSize()
 bmp = wx.EmptyBitmap(width,height)
 dc = wx.BufferedDC(None, bmp)
 dc.BeginDrawing()
 dc.SetBackground(wx.Brush(wx.Colour(0,0,0), wx.SOLID))
 dc.Clear()
 
 dc.DrawRoundedRectangle(0, 0, width-1, height-1, 4)
 dc.EndDrawing()
 
 r = wx.RegionFromBitmapColour(bmp, wx.Colour(0,0,0))
 self.hasShape = self.SetShape(r)

 
if __name__ == "__main__":
 app = wx.PySimpleApp()
 dlg = RCDialog(size=(376,282))
 dlg.Show()
 app.MainLoop()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

wxpython 圆角窗体