--- /dev/null
+
+
+import wx
+
+testItems = [
+ "",
+ "BitmapButton",
+ "Button",
+ "CalendarCtrl",
+ "CheckBox",
+ "CheckListBox",
+ "Choice",
+ "ComboBox",
+ "Gauge",
+ "GenericDirCtrl",
+ "ListBox",
+ "ListCtrl",
+ "RadioBox",
+ "RadioButton",
+ "ScrollBar",
+ "Slider",
+ "SpinButton",
+ "SpinCtrl",
+ "StaticBitmap",
+ "StaticBox",
+ "StaticLine",
+ "StaticText",
+ "TextCtrl",
+ "ToggleButton",
+ "TreeCtrl",
+ "--------------",
+ "Panel",
+ "Panel With Border",
+ "Panel With BG",
+ "Panel With Controls",
+ "Panel With RadioBox",
+ "--------------",
+ "GenericButton",
+
+ ]
+
+import keyword
+testChoices = keyword.kwlist
+
+testChoices2 = "one two three four five six seven eight nine".split()
+
+
+
+
+class Frame(wx.Frame):
+ def __init__(self):
+ wx.Frame.__init__(self, None, title="Draw Widget Test")
+ self.left = wx.Panel(self)
+ self.right = DisplayPanel(self)
+ self.widget = None
+
+ sizer = wx.BoxSizer(wx.HORIZONTAL)
+ sizer.Add(self.left, 1, wx.EXPAND)
+ sizer.Add(self.right, 1, wx.EXPAND)
+ self.SetSizer(sizer)
+
+ menu = wx.Menu()
+ menu.Append(wx.ID_EXIT, "E&xit\tAlt-X")
+ self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
+ mbar = wx.MenuBar()
+ mbar.Append(menu, "&File")
+ self.SetMenuBar(mbar)
+
+ cb = wx.ComboBox(self.left, -1, pos=(20,20),
+ choices=testItems, style=wx.CB_READONLY)
+ self.Bind(wx.EVT_COMBOBOX, self.OnWidgetChosen, cb)
+
+
+ def OnWidgetChosen(self, evt):
+ item = evt.GetString()
+ item = item.replace(" ", "_")
+ func = getattr(self, "Test"+item, None)
+ if func is not None:
+ func(self.left)
+
+ def OnExit(self, evt):
+ self.Close()
+
+
+
+ def DoWidget(self, widget):
+ self.right.Empty()
+ if self.widget is not None:
+ self.widget.Destroy()
+ self.widget = widget
+ if widget is None:
+ return
+
+ visiblePos = (20,80)
+ hiddenPos = (-1000,-1000)
+
+ widget.SetPosition(visiblePos)
+ widget.Update()
+ self.GetBMP(0) # Uses just a DC.Blit, so it must be visible
+
+ # the rest should work when the widget is not visible.
+ widget.SetPosition(hiddenPos)
+ widget.Update()
+ self.Update()
+
+ self.GetBMP(1)
+ self.GetBMP(2)
+ self.GetBMP(4)
+
+ # make it visible again for the user to compare
+ widget.SetPosition(visiblePos)
+
+
+ def GetBMP(self, method):
+ w = self.widget
+ maskClr = wx.Colour(12, 34, 56)
+ sz = w.GetSize()
+ bmp = wx.EmptyBitmap(sz.width, sz.height)
+ dc = wx.MemoryDC()
+ dc.SelectObject(bmp)
+ dc.SetBackground(wx.Brush(maskClr))
+ dc.Clear()
+
+ if method == 0:
+ wdc = wx.WindowDC(w)
+ dc.Blit(0,0, sz.width, sz.height, wdc, 0, 0)
+ else:
+ wx.DrawWindowOnDC(w, dc, method)
+
+ dc.SelectObject(wx.NullBitmap)
+ bmp.SetMaskColour(maskClr)
+ self.right.SetBMP(bmp, method)
+
+
+
+
+
+ def Test(self, p):
+ self.DoWidget(None)
+
+ def TestBitmapButton(self, p):
+ self.DoWidget(wx.BitmapButton(p, -1,
+ wx.Bitmap("image.png")))
+ def TestButton(self, p):
+ self.DoWidget(wx.Button(p, -1, "A button"))
+
+ def TestCalendarCtrl(self, p):
+ import wx.calendar
+ w = wx.calendar.CalendarCtrl(p, style=wx.calendar.CAL_SEQUENTIAL_MONTH_SELECTION)
+ self.DoWidget(w)
+
+ def TestCheckBox(self, p):
+ self.DoWidget(wx.CheckBox(p, -1, "checkbox"))
+
+ def TestCheckListBox(self, p):
+ w = wx.CheckListBox(p, -1, choices=testChoices)
+ w.SetSelection(2)
+ self.DoWidget(w)
+
+ def TestChoice(self, p):
+ w = wx.Choice(p, -1, choices=testChoices)
+ w.SetSelection(2)
+ self.DoWidget(w)
+
+ def TestComboBox(self, p):
+ w = wx.ComboBox(p, -1, choices=testChoices)
+ w.SetSelection(2)
+ self.DoWidget(w)
+
+ def TestGauge(self, p):
+ w = wx.Gauge(p, -1, 100, size=(150, -1))
+ w.SetValue(65)
+ self.DoWidget(w)
+
+ def TestGenericDirCtrl(self, p):
+ w = wx.GenericDirCtrl(p, size=(150,200), style=wx.DIRCTRL_DIR_ONLY)
+ self.DoWidget(w)
+
+ def TestListBox(self, p):
+ w = wx.ListBox(p, -1, choices=testChoices)
+ w.SetSelection(2)
+ self.DoWidget(w)
+
+ def TestListCtrl(self, p):
+ w = wx.ListCtrl(p, -1, size=(250, 100), style=wx.LC_REPORT)
+ w.InsertColumn(0, "Col 1")
+ w.InsertColumn(1, "Col 2")
+ w.InsertColumn(2, "Col 3")
+ for x in range(10):
+ w.InsertStringItem(x, str(x))
+ w.SetStringItem(x, 1, str(x))
+ w.SetStringItem(x, 2, str(x))
+ self.DoWidget(w)
+
+ def TestRadioBox(self, p):
+ w = wx.RadioBox(p, -1, "RadioBox",
+ choices=testChoices2, majorDimension=3)
+ self.DoWidget(w)
+
+ def TestRadioButton(self, p):
+ self.DoWidget(wx.RadioButton(p, -1, "RadioButton"))
+
+ def TestScrollBar(self, p):
+ w = wx.ScrollBar(p, -1, size=(150,-1))
+ w.SetScrollbar(25, 5, 100, 10)
+ self.DoWidget(w)
+
+ def TestSlider(self, p):
+ w = wx.Slider(p, -1, size=(150,-1))
+ self.DoWidget(w)
+
+ def TestSpinButton(self, p):
+ w = wx.SpinButton(p, -1)
+ self.DoWidget(w)
+
+ def TestSpinCtrl(self, p):
+ w = wx.SpinCtrl(p, -1)
+ self.DoWidget(w)
+
+ def TestStaticBitmap(self, p):
+ w = wx.StaticBitmap(p, -1, wx.Bitmap("image.png"))
+ self.DoWidget(w)
+
+ def TestStaticBox(self, p):
+ w = wx.StaticBox(p, -1, "StaticBox", size=(150,75))
+ self.DoWidget(w)
+
+ def TestStaticLine(self, p):
+ w = wx.StaticLine(p, -1, size=(150,-1))
+ self.DoWidget(w)
+
+ def TestStaticText(self, p):
+ w = wx.StaticText(p, -1, "This is a wx.StaticText")
+ self.DoWidget(w)
+
+ def TestTextCtrl(self, p):
+ self.DoWidget(wx.TextCtrl(p, -1, "This is a TextCtrl", size=(150,-1)))
+
+ def TestToggleButton(self, p):
+ w = wx.ToggleButton(p, -1, "Toggle Button")
+ self.DoWidget(w)
+
+ def TestTreeCtrl(self, p):
+ w = wx.TreeCtrl(p, -1, size=(150,200))
+ root = w.AddRoot("The Root Item")
+ for x in range(15):
+ child = w.AppendItem(root, "Item %d" % x)
+ w.Expand(root)
+ self.DoWidget(w)
+
+ def TestPanel(self, p):
+ w = wx.Panel(p, size=(100,100))
+ self.DoWidget(w)
+
+ def TestPanel_With_Border(self, p):
+ w = wx.Panel(p, size=(100,100), style=wx.SUNKEN_BORDER)
+ self.DoWidget(w)
+
+ def TestPanel_With_BG(self, p):
+ w = wx.Panel(p, size=(100,100), style=wx.SUNKEN_BORDER)
+ w.SetBackgroundColour("pink")
+ self.DoWidget(w)
+
+ def TestPanel_With_Controls(self, p):
+ w = wx.Panel(p, size=(100,100), style=wx.SUNKEN_BORDER)
+ l1 = wx.StaticText(w, -1, "Name:")
+ l2 = wx.StaticText(w, -1, "Email:")
+ t1 = wx.TextCtrl(w, -1, "", size=(120,-1))
+ t2 = wx.TextCtrl(w, -1, "", size=(120,-1))
+ btn = wx.Button(w, wx.ID_OK)
+ sizer = wx.BoxSizer(wx.VERTICAL)
+ fgs = wx.FlexGridSizer(2,2,5,5)
+ fgs.Add(l1)
+ fgs.Add(t1)
+ fgs.Add(l2)
+ fgs.Add(t2)
+ sizer.Add(fgs, 0, wx.ALL, 10)
+ sizer.Add(btn, 0, wx.ALL, 10)
+ w.SetSizerAndFit(sizer)
+ self.DoWidget(w)
+
+ def TestPanel_With_RadioBox(self, p):
+ w = wx.Panel(p, size=(100,100), style=wx.SUNKEN_BORDER)
+ wx.RadioBox(w, -1, "RadioBox", pos=(10,10),
+ choices=testChoices2, majorDimension=3)
+ w.Fit()
+ self.DoWidget(w)
+
+ def TestGenericButton(self, p):
+ import wx.lib.buttons as b
+ w = b.GenButton(p, -1, "Generic Button")
+ w.SetFont(wx.Font(20, wx.SWISS, wx.NORMAL, wx.BOLD, False))
+ w.SetBezelWidth(5)
+ w.SetBestSize()
+ w.SetBackgroundColour("Navy")
+ w.SetForegroundColour(wx.WHITE)
+ self.DoWidget(w)
+
+ def TestT(self, p):
+ self.DoWidget(w)
+
+ def TestT(self, p):
+ self.DoWidget(w)
+
+ def TestT(self, p):
+ self.DoWidget(w)
+
+ def TestT(self, p):
+ self.DoWidget(w)
+
+
+
+
+
+
+
+class DisplayPanel(wx.Panel):
+ def __init__(self, parent, ID=-1):
+ wx.Panel.__init__(self, parent, ID)
+ self.SetBackgroundColour("sky blue")
+ self.Empty()
+ self.Bind(wx.EVT_PAINT, self.OnPaint)
+ self.Bind(wx.EVT_ERASE_BACKGROUND, self.OEB)
+
+ def Empty(self):
+ self.bmps = [None] * 5
+ self.Refresh()
+
+ def SetBMP(self, bmp, method):
+ self.bmps[method] = bmp
+ self.Refresh()
+
+ def OEB(self, evt):
+ None
+
+ def OnPaint(self, evt):
+ dc = wx.BufferedPaintDC(self)
+ dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
+ dc.Clear()
+ y = 25
+ for idx, bmp in enumerate(self.bmps):
+ if bmp is not None:
+ dc.DrawText(str(idx), 15, y)
+ dc.DrawBitmap(bmp, 30,y, True)
+ y += bmp.GetHeight() + 15
+
+
+
+app = wx.App(False)
+f = Frame()
+f.SetSize((600,600))
+f.Show()
+app.MainLoop()