Added a sample to the demo showing how to change the cursor, what all
the stock cursors are, and how to set a custom cursor. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24798 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
139
wxPython/demo/Cursor.py
Normal file
139
wxPython/demo/Cursor.py
Normal file
@@ -0,0 +1,139 @@
|
||||
|
||||
import wx
|
||||
import images
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
CUSTOMID = 1111
|
||||
|
||||
cursors = {
|
||||
"wx.CURSOR_ARROW" : wx.CURSOR_ARROW,
|
||||
"wx.CURSOR_RIGHT_ARROW" : wx.CURSOR_RIGHT_ARROW,
|
||||
"wx.CURSOR_BULLSEYE" : wx.CURSOR_BULLSEYE,
|
||||
"wx.CURSOR_CHAR" : wx.CURSOR_CHAR,
|
||||
"wx.CURSOR_CROSS" : wx.CURSOR_CROSS,
|
||||
"wx.CURSOR_HAND" : wx.CURSOR_HAND,
|
||||
"wx.CURSOR_IBEAM" : wx.CURSOR_IBEAM,
|
||||
"wx.CURSOR_LEFT_BUTTON" : wx.CURSOR_LEFT_BUTTON,
|
||||
"wx.CURSOR_MAGNIFIER" : wx.CURSOR_MAGNIFIER,
|
||||
"wx.CURSOR_MIDDLE_BUTTON" : wx.CURSOR_MIDDLE_BUTTON,
|
||||
"wx.CURSOR_NO_ENTRY" : wx.CURSOR_NO_ENTRY,
|
||||
"wx.CURSOR_PAINT_BRUSH" : wx.CURSOR_PAINT_BRUSH,
|
||||
"wx.CURSOR_PENCIL" : wx.CURSOR_PENCIL,
|
||||
"wx.CURSOR_POINT_LEFT" : wx.CURSOR_POINT_LEFT,
|
||||
"wx.CURSOR_POINT_RIGHT" : wx.CURSOR_POINT_RIGHT,
|
||||
"wx.CURSOR_QUESTION_ARROW" : wx.CURSOR_QUESTION_ARROW,
|
||||
"wx.CURSOR_RIGHT_BUTTON" : wx.CURSOR_RIGHT_BUTTON,
|
||||
"wx.CURSOR_SIZENESW" : wx.CURSOR_SIZENESW,
|
||||
"wx.CURSOR_SIZENS" : wx.CURSOR_SIZENS,
|
||||
"wx.CURSOR_SIZENWSE" : wx.CURSOR_SIZENWSE,
|
||||
"wx.CURSOR_SIZEWE" : wx.CURSOR_SIZEWE,
|
||||
"wx.CURSOR_SIZING" : wx.CURSOR_SIZING,
|
||||
"wx.CURSOR_SPRAYCAN" : wx.CURSOR_SPRAYCAN,
|
||||
"wx.CURSOR_WAIT" : wx.CURSOR_WAIT,
|
||||
"wx.CURSOR_WATCH" : wx.CURSOR_WATCH,
|
||||
"wx.CURSOR_BLANK" : wx.CURSOR_BLANK,
|
||||
"wx.CURSOR_DEFAULT" : wx.CURSOR_DEFAULT,
|
||||
"wx.CURSOR_COPY_ARROW" : wx.CURSOR_COPY_ARROW,
|
||||
"wx.CURSOR_ARROWWAIT" : wx.CURSOR_ARROWWAIT,
|
||||
|
||||
"zz [custom cursor]" : CUSTOMID,
|
||||
}
|
||||
|
||||
|
||||
class TestPanel(wx.Panel):
|
||||
def __init__(self, parent, log):
|
||||
self.log = log
|
||||
wx.Panel.__init__(self, parent, -1)
|
||||
|
||||
# create a list of choices from the dictionary above
|
||||
choices = cursors.keys()
|
||||
choices.sort()
|
||||
|
||||
# create the controls
|
||||
self.ch = wx.Choice(self, -1, choices=choices)
|
||||
self.ch.SetStringSelection("wx.CURSOR_DEFAULT")
|
||||
self.tx = wx.StaticText(self, -1,
|
||||
"This sample allows you to see all the stock cursors \n"
|
||||
"available to wxPython. Simply select a name from the \n"
|
||||
"wx.Choice and then move the mouse into the dineo below \n"
|
||||
"to see the cursor. NOTE: not all stock cursors have a \n"
|
||||
"specific representaion on all platforms.")
|
||||
|
||||
self.win = wx.Window(self, -1, size=(200,200), style=wx.SIMPLE_BORDER)
|
||||
self.win.SetBackgroundColour("white")
|
||||
|
||||
# bind an event or two
|
||||
self.Bind(wx.EVT_CHOICE, self.OnChooseCursor, self.ch)
|
||||
self.win.Bind(wx.EVT_LEFT_DOWN, self.OnDrawDot)
|
||||
|
||||
|
||||
# Setup the layout
|
||||
gbs = wx.GridBagSizer()
|
||||
gbs.Add(self.ch, (2,2))
|
||||
gbs.Add(self.tx, (2,4))
|
||||
gbs.Add(self.win, (5,0), (1, 6), wx.ALIGN_CENTER)
|
||||
self.SetSizer(gbs)
|
||||
|
||||
|
||||
def OnChooseCursor(self, evt):
|
||||
# clear the dots
|
||||
self.win.Refresh()
|
||||
|
||||
choice = self.ch.GetStringSelection()
|
||||
self.log.write("Selecting the %s cursor\n" % choice)
|
||||
|
||||
cnum = cursors[choice]
|
||||
|
||||
if cnum == CUSTOMID:
|
||||
image = images.getBlom12Image()
|
||||
image.SetMaskColour(255, 255, 255)
|
||||
|
||||
# since this image didn't come from a .cur file, tell it where the hotspot is
|
||||
image.SetOptionInt(wx.IMAGE_OPTION_CUR_HOTSPOT_X, 0)
|
||||
image.SetOptionInt(wx.IMAGE_OPTION_CUR_HOTSPOT_Y, 22)
|
||||
|
||||
# make the image into a cursor
|
||||
cursor = wx.CursorFromImage(image)
|
||||
|
||||
else:
|
||||
# create one of the stock (built-in) cursors
|
||||
cursor = wx.StockCursor(cnum)
|
||||
|
||||
# set the cursor for the window
|
||||
self.win.SetCursor(cursor)
|
||||
|
||||
|
||||
def OnDrawDot(self, evt):
|
||||
# Draw a dot so the user can see where the hotspot is
|
||||
dc = wx.ClientDC(self.win)
|
||||
dc.SetPen(wx.Pen("RED"))
|
||||
dc.SetBrush(wx.Brush("RED"))
|
||||
dc.DrawCircle(evt.GetPosition(), 4)
|
||||
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
def runTest(frame, nb, log):
|
||||
win = TestPanel(nb, log)
|
||||
return win
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
overview = """<html><body>
|
||||
<h2><center>wx.Cursor</center></h2>
|
||||
|
||||
This demo shows the stock mouse cursors that are available to wxPython.
|
||||
|
||||
</body></html>
|
||||
"""
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys,os
|
||||
import run
|
||||
run.main(['', os.path.basename(sys.argv[0])])
|
||||
|
@@ -35,6 +35,7 @@ _treeList = [
|
||||
'FloatCanvas',
|
||||
'wxXmlResourceSubclass',
|
||||
'wxGridBagSizer',
|
||||
'Cursor',
|
||||
]),
|
||||
|
||||
# managed windows == things with a (optional) caption you can close
|
||||
@@ -185,6 +186,7 @@ _treeList = [
|
||||
|
||||
# Images
|
||||
('Using Images', [
|
||||
'Cursor',
|
||||
'Throbber',
|
||||
'wxArtProvider',
|
||||
'wxDragImage',
|
||||
|
Reference in New Issue
Block a user