def BuildEllipticButtons(self): # Here We Build Elliptic Buttons. Elliptic Buttons Are Somewhat # More Hostiles To Handle, Probably Because My Implementation # Is Lacking Somewhere, But They Look Nice However. esizer = wx.FlexGridSizer(2, 2, 5, 5) btn1 = SButton(self.panel, -1, "Ellipse 1") btn1.SetEllipseAxis(2, 1) btn1.SetButtonColour(wx.RED) btn1.SetLabelColour(wx.WHITE) btn1.SetFont( wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False)) btn1.Bind(wx.EVT_BUTTON, self.OnEllipse) btn2 = SButton(self.panel, -1, "Ellipse 2") btn2.SetEllipseAxis(2, 3) btn2.SetAngleOfRotation(90) btn2.SetLabelColour(wx.BLUE) btn2.SetFont( wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, True)) btn2.Bind(wx.EVT_BUTTON, self.OnEllipse) bmp = wx.Bitmap(os.path.join(bitmapDir, "ffwd.png"), wx.BITMAP_TYPE_PNG) btn3 = SBitmapTextToggleButton(self.panel, -1, bmp, "FFWD") bmp = wx.Bitmap(os.path.join(bitmapDir, "rewind.png"), wx.BITMAP_TYPE_PNG) btn3.SetBitmapSelected(bmp) btn3.SetEllipseAxis(1.4, 1) btn3.Bind(wx.EVT_BUTTON, self.OnFFWDRewind) bmp = wx.Bitmap(os.path.join(bitmapDir, "round.png"), wx.BITMAP_TYPE_PNG) btn4 = SBitmapButton(self.panel, -1, bmp) btn4.SetEllipseAxis(1, 1.4) btn4.Bind(wx.EVT_BUTTON, self.OnRound) esizer.Add(btn1, 1, wx.EXPAND | wx.ALL, 5) esizer.Add(btn2, 1, wx.EXPAND | wx.ALL, 5) esizer.Add(btn3, 1, wx.EXPAND | wx.ALL, 5) esizer.Add(btn4, 1, wx.EXPAND | wx.ALL, 5) esizer.AddGrowableRow(0) esizer.AddGrowableRow(1) esizer.AddGrowableCol(0) esizer.AddGrowableCol(1) return esizer
def BuildMixedButtons(self): # Here We Build Some Buttons/Toggles With Different Properties # Notice That We Put Some Images Also For The "Selected" State # For A Button btsizer = wx.FlexGridSizer(2, 2, 5, 5) bmp = wx.Bitmap(os.path.join(bitmapDir, "italy.gif"), wx.BITMAP_TYPE_GIF) btn1 = SBitmapButton(self.panel, -1, bmp) bmp = wx.Bitmap(os.path.join(bitmapDir, "canada.gif"), wx.BITMAP_TYPE_GIF) btn1.SetBitmapSelected(bmp) btn1.Bind(wx.EVT_BUTTON, self.OnItalyCanada) bmp = wx.Bitmap(os.path.join(bitmapDir, "stop.png"), wx.BITMAP_TYPE_PNG) btn2 = SBitmapTextToggleButton(self.panel, -1, bmp, "Toggle!") bmp = wx.Bitmap(os.path.join(bitmapDir, "play.png"), wx.BITMAP_TYPE_PNG) btn2.SetBitmapSelected(bmp) btn2.Bind(wx.EVT_BUTTON, self.OnTogglePlayStop) btn3 = SButton(self.panel, -1, "Rotated") btn3.SetButtonColour(wx.Colour("Cyan")) btn3.SetLabelColour(wx.WHITE) btn3.SetFont( wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False)) btn3.SetAngleOfRotation(90) btn3.Bind(wx.EVT_BUTTON, self.OnRotated1) btn4 = SButton(self.panel, -1, "Button!") btn4.SetAngleOfRotation(45) btn4.Bind(wx.EVT_BUTTON, self.OnRotated1) btsizer.Add(btn1, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, 5) btsizer.Add(btn2, 1, wx.EXPAND | wx.BOTTOM, 5) btsizer.Add(btn3, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, 5) btsizer.Add(btn4, 1, wx.EXPAND) btsizer.AddGrowableRow(0) btsizer.AddGrowableRow(1) btsizer.AddGrowableCol(0) btsizer.AddGrowableCol(1) return btsizer
class ShapedButtonDemo(wx.Frame): def __init__(self, parent, log): wx.Frame.__init__(self, parent, title="ShapedButton wxPython Demo ;-)") # Create Some Maquillage For The Demo: Icon, StatusBar, MenuBar... self.SetIcon(images.Mondrian.GetIcon()) self.statusbar = self.CreateStatusBar(2) self.statusbar.SetStatusWidths([-2, -1]) statusbar_fields = [ ("wxPython ShapedButton Demo, Andrea Gavana @ 18 Oct 2005"), ("Welcome To wxPython!") ] for i in range(len(statusbar_fields)): self.statusbar.SetStatusText(statusbar_fields[i], i) self.SetMenuBar(self.CreateMenuBar()) framesizer = wx.BoxSizer(wx.VERTICAL) self.panel = wx.Panel(self, -1) mainsizer = wx.BoxSizer(wx.VERTICAL) hsizer0 = wx.BoxSizer(wx.HORIZONTAL) sb0 = wx.StaticBox(self.panel, -1) recordsizer = wx.StaticBoxSizer(sb0, wx.HORIZONTAL) # Make A ToolBar-Like Audio Control With Round Buttons/Toggles self.BuildAudioToolBar() recordsizer.Add(self.rewind, 0, wx.LEFT, 3) recordsizer.Add(self.play, 0, wx.LEFT, 3) recordsizer.Add(self.record, 0, wx.LEFT, 3) recordsizer.Add(self.pause, 0, wx.LEFT, 3) recordsizer.Add(self.stop, 0, wx.LEFT, 3) recordsizer.Add(self.ffwd, 0, wx.LEFT | wx.RIGHT, 3) for ii in range(6): recordsizer.SetItemMinSize(ii, 48, 48) self.eventtext = wx.StaticText(self.panel, -1, "Event Recorder", style=wx.ST_NO_AUTORESIZE) self.eventtext.SetBackgroundColour(wx.BLUE) self.eventtext.SetForegroundColour(wx.WHITE) self.eventtext.SetFont( wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, "Verdana", wx.FONTENCODING_DEFAULT)) smallsizer = wx.BoxSizer(wx.VERTICAL) smallsizer.Add((0, 1), 1, wx.EXPAND) smallsizer.Add(self.eventtext, 1, wx.EXPAND) smallsizer.Add((0, 1), 1, wx.EXPAND) hsizer0.Add(recordsizer, 1, wx.EXPAND) hsizer0.Add(smallsizer, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, 5) mainsizer.Add(hsizer0, 0, wx.BOTTOM, 5) mainsizer.Add((0, 10), 0, wx.EXPAND) hsizer = wx.BoxSizer(wx.HORIZONTAL) # Make 9 SBitmapButtons With Text Rotation And Different Colours sb1 = wx.StaticBox(self.panel, -1, "Some Buttons") vsizer1 = wx.StaticBoxSizer(sb1, wx.VERTICAL) bsizer = self.BuildNineButtons() vsizer1.Add((0, 10), 0) vsizer1.Add(bsizer, 1, wx.EXPAND) vsizer1.Add((0, 10), 0) hsizer.Add(vsizer1, 3, wx.EXPAND) # Make Some Mixed SButton/SToggle With Bitmap And Text Rotation sb2 = wx.StaticBox(self.panel, -1, "Other Buttons") vsizer2 = wx.StaticBoxSizer(sb2, wx.VERTICAL) btsizer = self.BuildMixedButtons() vsizer2.Add((0, 10), 0) vsizer2.Add(btsizer, 1, wx.EXPAND) vsizer2.Add((0, 10), 0) hsizer.Add(vsizer2, 2, wx.EXPAND) # Build Buttons With Elliptic Shape sb3 = wx.StaticBox(self.panel, -1, "Elliptic Buttons") vsizer3 = wx.StaticBoxSizer(sb3, wx.VERTICAL) esizer = self.BuildEllipticButtons() vsizer3.Add((0, 10), 0) vsizer3.Add(esizer, 1, wx.EXPAND) vsizer3.Add((0, 10), 0) hsizer.Add(vsizer3, 2, wx.EXPAND) mainsizer.Add(hsizer, 1, wx.EXPAND | wx.ALL, 5) self.panel.SetSizer(mainsizer) mainsizer.Layout() framesizer.Add(self.panel, 1, wx.EXPAND) self.SetSizer(framesizer) framesizer.Layout() self.SetAutoLayout(True) self.Fit() self.Layout() self.CenterOnParent() def BuildAudioToolBar(self): # The Rewind Button Is A Simple Bitmap Button (SBitmapButton) upbmp = wx.Bitmap(os.path.join(bitmapDir, "rewind.png"), wx.BITMAP_TYPE_PNG) disbmp = wx.Bitmap(os.path.join(bitmapDir, "rewinddisabled.png"), wx.BITMAP_TYPE_PNG) self.rewind = SBitmapButton(self.panel, -1, upbmp, (48, 48)) self.rewind.SetUseFocusIndicator(False) self.rewind.SetBitmapDisabled(disbmp) self.rewind.Bind(wx.EVT_BUTTON, self.OnRewind) # The Play Button Is A Toggle Bitmap Button (SBitmapToggleButton) upbmp = wx.Bitmap(os.path.join(bitmapDir, "play.png"), wx.BITMAP_TYPE_PNG) disbmp = wx.Bitmap(os.path.join(bitmapDir, "playdisabled.png"), wx.BITMAP_TYPE_PNG) self.play = SBitmapToggleButton(self.panel, -1, upbmp, (48, 48)) self.play.SetUseFocusIndicator(False) self.play.SetBitmapDisabled(disbmp) self.play.Bind(wx.EVT_BUTTON, self.OnPlay) # The Record Button Is A Toggle Bitmap Button (SBitmapToggleButton) upbmp = wx.Bitmap(os.path.join(bitmapDir, "record.png"), wx.BITMAP_TYPE_PNG) disbmp = wx.Bitmap(os.path.join(bitmapDir, "recorddisabled.png"), wx.BITMAP_TYPE_PNG) self.record = SBitmapToggleButton(self.panel, -1, upbmp, (48, 48)) self.record.SetUseFocusIndicator(False) self.record.SetBitmapDisabled(disbmp) self.record.Bind(wx.EVT_BUTTON, self.OnRecord) # The Pause Button Is A Toggle Bitmap Button (SBitmapToggleButton) upbmp = wx.Bitmap(os.path.join(bitmapDir, "pause.png"), wx.BITMAP_TYPE_PNG) disbmp = wx.Bitmap(os.path.join(bitmapDir, "pausedisabled.png"), wx.BITMAP_TYPE_PNG) self.pause = SBitmapToggleButton(self.panel, -1, upbmp, (48, 48)) self.pause.SetUseFocusIndicator(False) self.pause.SetBitmapDisabled(disbmp) self.pause.Enable(False) self.pause.Bind(wx.EVT_BUTTON, self.OnPause) # The Stop Button Is A Simple Bitmap Button (SBitmapButton) upbmp = wx.Bitmap(os.path.join(bitmapDir, "stop.png"), wx.BITMAP_TYPE_PNG) disbmp = wx.Bitmap(os.path.join(bitmapDir, "stopdisabled.png"), wx.BITMAP_TYPE_PNG) self.stop = SBitmapButton(self.panel, -1, upbmp, (48, 48)) self.stop.SetUseFocusIndicator(False) self.stop.SetBitmapDisabled(disbmp) self.stop.Enable(False) self.stop.Bind(wx.EVT_BUTTON, self.OnStop) # The FFWD Button Is A Simple Bitmap Button (SBitmapButton) upbmp = wx.Bitmap(os.path.join(bitmapDir, "ffwd.png"), wx.BITMAP_TYPE_PNG) disbmp = wx.Bitmap(os.path.join(bitmapDir, "ffwddisabled.png"), wx.BITMAP_TYPE_PNG) self.ffwd = SBitmapButton(self.panel, -1, upbmp, (48, 48)) self.ffwd.SetUseFocusIndicator(False) self.ffwd.SetBitmapDisabled(disbmp) self.ffwd.Bind(wx.EVT_BUTTON, self.OnFFWD) def BuildNineButtons(self): # We Build 9 Buttons With Different Colours And A Nice Text Rotation colours = [ None, wx.BLUE, wx.RED, wx.GREEN, wx.Colour("Gold"), wx.CYAN, wx.YELLOW, wx.Colour("Orange"), wx.Colour("Magenta") ] labels = [ "These", "Are", "Some", "Nice", "Text", "Appended", "To Different", "Buttons", "Nice Eh?" ] fnt = self.GetFont() fonts = [ fnt, wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD), wx.Font(10, wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL), wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, True), fnt, wx.Font(9, wx.FONTFAMILY_DECORATIVE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD), wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, "Tahoma"), fnt, wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, True, "Verdana") ] lcolours = [ None, wx.WHITE, wx.Colour("Yellow"), wx.WHITE, None, None, wx.BLUE, wx.WHITE, wx.WHITE ] bsizer = wx.FlexGridSizer(3, 3, 5, 5) rotation = [] for ii in range(9): btn = SButton(self.panel, -1, labels[ii]) btn.SetButtonColour(colours[ii]) btn.SetFont(fonts[ii]) btn.SetLabelColour(lcolours[ii]) btn.SetUseFocusIndicator(True) btn.SetAngleOfRotation(45 * ii) rotation.append(45 * ii) btn.Bind(wx.EVT_BUTTON, self.OnNineButtons) bsizer.Add(btn, 1, wx.EXPAND | wx.BOTTOM | wx.RIGHT, 5) bsizer.AddGrowableRow(0) bsizer.AddGrowableRow(1) bsizer.AddGrowableRow(2) bsizer.AddGrowableCol(0) bsizer.AddGrowableCol(1) bsizer.AddGrowableCol(2) self.buttonlabels = labels self.buttonrotation = rotation return bsizer def BuildMixedButtons(self): # Here We Build Some Buttons/Toggles With Different Properties # Notice That We Put Some Images Also For The "Selected" State # For A Button btsizer = wx.FlexGridSizer(2, 2, 5, 5) bmp = wx.Bitmap(os.path.join(bitmapDir, "italy.gif"), wx.BITMAP_TYPE_GIF) btn1 = SBitmapButton(self.panel, -1, bmp) bmp = wx.Bitmap(os.path.join(bitmapDir, "canada.gif"), wx.BITMAP_TYPE_GIF) btn1.SetBitmapSelected(bmp) btn1.Bind(wx.EVT_BUTTON, self.OnItalyCanada) bmp = wx.Bitmap(os.path.join(bitmapDir, "stop.png"), wx.BITMAP_TYPE_PNG) btn2 = SBitmapTextToggleButton(self.panel, -1, bmp, "Toggle!") bmp = wx.Bitmap(os.path.join(bitmapDir, "play.png"), wx.BITMAP_TYPE_PNG) btn2.SetBitmapSelected(bmp) btn2.Bind(wx.EVT_BUTTON, self.OnTogglePlayStop) btn3 = SButton(self.panel, -1, "Rotated") btn3.SetButtonColour(wx.Colour("Cyan")) btn3.SetLabelColour(wx.WHITE) btn3.SetFont( wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False)) btn3.SetAngleOfRotation(90) btn3.Bind(wx.EVT_BUTTON, self.OnRotated1) btn4 = SButton(self.panel, -1, "Button!") btn4.SetAngleOfRotation(45) btn4.Bind(wx.EVT_BUTTON, self.OnRotated1) btsizer.Add(btn1, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, 5) btsizer.Add(btn2, 1, wx.EXPAND | wx.BOTTOM, 5) btsizer.Add(btn3, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, 5) btsizer.Add(btn4, 1, wx.EXPAND) btsizer.AddGrowableRow(0) btsizer.AddGrowableRow(1) btsizer.AddGrowableCol(0) btsizer.AddGrowableCol(1) return btsizer def BuildEllipticButtons(self): # Here We Build Elliptic Buttons. Elliptic Buttons Are Somewhat # More Hostiles To Handle, Probably Because My Implementation # Is Lacking Somewhere, But They Look Nice However. esizer = wx.FlexGridSizer(2, 2, 5, 5) btn1 = SButton(self.panel, -1, "Ellipse 1") btn1.SetEllipseAxis(2, 1) btn1.SetButtonColour(wx.RED) btn1.SetLabelColour(wx.WHITE) btn1.SetFont( wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False)) btn1.Bind(wx.EVT_BUTTON, self.OnEllipse) btn2 = SButton(self.panel, -1, "Ellipse 2") btn2.SetEllipseAxis(2, 3) btn2.SetAngleOfRotation(90) btn2.SetLabelColour(wx.BLUE) btn2.SetFont( wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, True)) btn2.Bind(wx.EVT_BUTTON, self.OnEllipse) bmp = wx.Bitmap(os.path.join(bitmapDir, "ffwd.png"), wx.BITMAP_TYPE_PNG) btn3 = SBitmapTextToggleButton(self.panel, -1, bmp, "FFWD") bmp = wx.Bitmap(os.path.join(bitmapDir, "rewind.png"), wx.BITMAP_TYPE_PNG) btn3.SetBitmapSelected(bmp) btn3.SetEllipseAxis(1.4, 1) btn3.Bind(wx.EVT_BUTTON, self.OnFFWDRewind) bmp = wx.Bitmap(os.path.join(bitmapDir, "round.png"), wx.BITMAP_TYPE_PNG) btn4 = SBitmapButton(self.panel, -1, bmp) btn4.SetEllipseAxis(1, 1.4) btn4.Bind(wx.EVT_BUTTON, self.OnRound) esizer.Add(btn1, 1, wx.EXPAND | wx.ALL, 5) esizer.Add(btn2, 1, wx.EXPAND | wx.ALL, 5) esizer.Add(btn3, 1, wx.EXPAND | wx.ALL, 5) esizer.Add(btn4, 1, wx.EXPAND | wx.ALL, 5) esizer.AddGrowableRow(0) esizer.AddGrowableRow(1) esizer.AddGrowableCol(0) esizer.AddGrowableCol(1) return esizer def CreateMenuBar(self): file_menu = wx.Menu() AS_EXIT = wx.NewIdRef() file_menu.Append(AS_EXIT, "&Exit") self.Bind(wx.EVT_MENU, self.OnClose, id=AS_EXIT) help_menu = wx.Menu() AS_ABOUT = wx.NewIdRef() help_menu.Append(AS_ABOUT, "&About...") self.Bind(wx.EVT_MENU, self.OnAbout, id=AS_ABOUT) menu_bar = wx.MenuBar() menu_bar.Append(file_menu, "&File") menu_bar.Append(help_menu, "&Help") return menu_bar def OnClose(self, event): self.Destroy() def OnAbout(self, event): msg = "This Is The About Dialog Of The ShapedButton Demo.\n\n" + \ "Author: Andrea Gavana @ 18 Oct 2005\n\n" + \ "Please Report Any Bug/Requests Of Improvements\n" + \ "To Me At The Following Addresses:\n\n" + \ "[email protected]\n" + "[email protected]\n\n" + \ "Welcome To wxPython " + wx.VERSION_STRING + "!!" dlg = wx.MessageDialog(self, msg, "ShapedButton Demo", wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy() def OnRewind(self, event): self.eventtext.SetLabel("Rewind Button!") self.eventtext.Refresh() event.Skip() def OnPlay(self, event): if not event.GetIsDown(): self.eventtext.SetLabel('Press "Stop" To Stop The Music!') self.eventtext.Refresh() self.play.SetToggle(True) return self.eventtext.SetLabel("We Started To Play") self.eventtext.Refresh() self.stop.Enable(True) self.pause.Enable(True) self.rewind.Enable(False) self.ffwd.Enable(False) self.record.Enable(False) event.Skip() def OnRecord(self, event): if not event.GetIsDown(): self.eventtext.SetLabel("Recording Stopped") self.eventtext.Refresh() self.stop.Enable(False) self.pause.Enable(False) self.rewind.Enable(True) self.ffwd.Enable(True) self.play.Enable(True) event.Skip() return self.eventtext.SetLabel("What Are You Recording? ;-)") self.eventtext.Refresh() self.stop.Enable(True) self.pause.Enable(True) self.rewind.Enable(False) self.ffwd.Enable(False) self.play.Enable(False) event.Skip() def OnPause(self, event): if event.GetIsDown(): self.eventtext.SetLabel("Pausing Play Or Recording...") else: self.eventtext.SetLabel("Playing After A Pause...") self.eventtext.Refresh() event.Skip() def OnStop(self, event): self.eventtext.SetLabel("Everything Stopped") self.eventtext.Refresh() self.stop.Enable(False) self.pause.Enable(False) self.rewind.Enable(True) self.ffwd.Enable(True) self.play.Enable(True) self.record.Enable(True) self.play.SetToggle(False) self.pause.SetToggle(False) self.record.SetToggle(False) event.Skip() def OnFFWD(self, event): self.eventtext.SetLabel("Fast Forward Button!") self.eventtext.Refresh() event.Skip() def OnNineButtons(self, event): btn = event.GetEventObject() label = btn.GetLabel() mystr = "Button: " + label + ", Rotation: " + \ str(int(btn.GetAngleOfRotation())) + " Degrees" self.eventtext.SetLabel(mystr) self.eventtext.Refresh() event.Skip() def OnItalyCanada(self, event): self.eventtext.SetLabel("Italy VS Canada ;-)") self.eventtext.Refresh() event.Skip() def OnTogglePlayStop(self, event): if event.GetIsDown(): label = "You Started To Play!" else: label = "Why Did You Stop The Music? ;-)" self.eventtext.SetLabel(label) self.eventtext.Refresh() event.Skip() def OnRotated1(self, event): btn = event.GetEventObject() label = btn.GetLabel() angle = int(btn.GetAngleOfRotation()) mystr = "You Clicked: " + label + ", Rotated By: " + str( angle) + " Degrees" self.eventtext.SetLabel(mystr) self.eventtext.Refresh() btn.SetAngleOfRotation(random.randint(0, 359)) event.Skip() def OnEllipse(self, event): btn = event.GetEventObject() label = btn.GetLabel() angle = int(btn.GetAngleOfRotation()) mystr = "Do You Like Them? (Rotation = " + str(angle) + " Degrees)" self.eventtext.SetLabel(mystr) self.eventtext.Refresh() event.Skip() def OnFFWDRewind(self, event): btn = event.GetEventObject() if event.GetIsDown(): label = "Let's Rewind Everything" btn.SetLabel("REW") else: label = "Go To The End Of The Tape!" btn.SetLabel("FFWD") self.eventtext.SetLabel(label) self.eventtext.Refresh() event.Skip() def OnRound(self, event): self.eventtext.SetLabel("I Have Nothing To Say Here ;-)") self.eventtext.Refresh() event.Skip()