1. 程式人生 > 程式設計 >wxpython繪製圓角窗體

wxpython繪製圓角窗體

本文例項為大家分享了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),wx.SOLID))
  dc.Clear()
 
  dc.DrawRoundedRectangle(0,width-1,height-1,4)
  dc.EndDrawing()
 
  r = wx.RegionFromBitmapColour(bmp,wx.Colour(0,0))
  self.hasShape = self.SetShape(r)

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。