Changing button preferences after beeing pressed

T

thomas.lidebrandt

Hello

I'm using wxPython to consruct a GUI and want to change a button label
and event handler to change after the button have been pressed. The
only thing I can think of is a global variable that contrls the state
of the program and constructs the button in accordance to the defined
state. Is there a better solution to this problem?

/Thomas
 
B

Bjoern Schliessmann

I'm using wxPython to consruct a GUI and want to change a button
label

=> wx.Button.SetLabel (also have a look at the button examples)
and event handler to change after the button have been
pressed.

I'm not sure if those bindings can easily be changed at runtime.
Another solution is creating two buttons and only show one at a
time.
The only thing I can think of is a global variable that
contrls the state of the program and constructs the button in
accordance to the defined state.

Better keep the state as frame attribute and use a frame method to
change it.

Regards,


Björn
 
S

Steve Holden

Hello

I'm using wxPython to consruct a GUI and want to change a button label
and event handler to change after the button have been pressed. The
only thing I can think of is a global variable that contrls the state
of the program and constructs the button in accordance to the defined
state. Is there a better solution to this problem?
It would be difficult to think of a worse one! ;-)

Since the button is probably in some sort of window, you should at least
be saving the state as an instance variable of the window. The event
handler should start with an "if" statement that calls one or other of
the routines you have in mind depending on state. Here's a button
event-handlerI use in a time recording program:

def OnPauseRestart(self, event):
"""Stops/restarts the clock: allows for non-recordable
activities."""
if self.Running:
self.stopTimer()
else:
self.startTimer()

def startTimer(self):
"""Starts the timer and returns the time to black."""
if not self.currentTask:
msg("Please select a task before starting the timer",
caption="No current task")
return
self.timer.Start(1000)
self.Time().SetForegroundColour(wx.BLACK)
self.Time().Refresh()
self.Pause().SetLabel("&Pause")
self.Running = 1

def stopTimer(self):
"""Stops the timer and sets the time red - you are not
chargeable!"""
self.timer.Stop()
self.Time().SetForegroundColour(wx.RED)
self.Time().Refresh()
self.Pause().SetLabel("&Resume")
self.Running = 0

Hope this helps.

regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden
--------------- Asciimercial ------------------
Get on the web: Blog, lens and tag the Internet
Many services currently offer free registration
----------- Thank You for Reading -------------
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top