May-01-2019, 05:21 PM
(This post was last modified: May-01-2019, 06:00 PM by microphone_head.)
Hi all,
Having trouble updating the text in a label
.
I've created a tkinter window and created an update routine, but its not obvious to myself as to how to set the attributes
. Any suggestions?
That was brutal
. Took a while but I got there in the end. Turns out they use a config method. Had a few passed at skimming the reference document Tkinter 8.5 and didn't see it.
Having trouble updating the text in a label

I've created a tkinter window and created an update routine, but its not obvious to myself as to how to set the attributes

import tkinter as tk import pygame pygame.init() pwbr_power = 0 pwbr_duration = 0 pwbr_scrn_refresh = 0 pwbr_elps_time = 0 pwbr_ttl_sec = 0 class Application(tk.Frame): def __init__(self, master=None): tk.Frame.__init__(self, master) self.grid() self.createwidgets() # __init__() --------------------------------------------------------------- def createwidgets(self): """ Creates the numerous widgets that make up the form. """ global pwbr_power, pwbr_duration, pwbr_scrn_refresh, pwbr_elps_time global pwbr_ttl_sec pwbr_power += 1 pwbr_duration += 0.15 pwbr_elps_time += pwbr_duration pwbr_scrn_refresh = 0.333 pwbr_ttl_sec += pwbr_elps_time if pwbr_elps_time > pwbr_scrn_refresh: pwbr_elps_time = 0 pwbr_duration = 0 caption_pwr = "Power: " + str(pwbr_power) caption_dur = "Duration: " + str(pwbr_duration) caption_rfrsh = "Screen Refresh: " + str(pwbr_scrn_refresh) caption_etime = "Elapsed time: " + str(pwbr_elps_time) caption_ttl = "Total sec's: " + str(pwbr_ttl_sec) self.lblpower = tk.Label(self, text=caption_pwr, fg="black") self.lblduration = tk.Label(self, text=caption_dur, fg="black") self.lblrefreshrate = tk.Label(self, text=caption_rfrsh, fg="black") self.lbletime = tk.Label(self, text=caption_etime, fg="black") self.lbltotalsec = tk.Label(self, text=caption_ttl, fg="black") self.quitButton = tk.Button(self, text='Quit', command=self.quit) self.lblpower.grid() self.lblduration.grid() self.lblrefreshrate.grid() self.lbletime.grid() self.lbltotalsec.grid() self.quitButton.grid() self.after(1000, self.update) # createwidgets() ---------------------------------------------------------- def update(self): """ Updates the status information in the tkinter window. """ global pwbr_power, pwbr_duration, pwbr_scrn_refresh, pwbr_elps_time global pwbr_ttl_sec pwbr_power += 1 pwbr_duration += 0.15 pwbr_elps_time += pwbr_duration pwbr_scrn_refresh = 0.333 pwbr_ttl_sec += pwbr_elps_time if pwbr_elps_time > pwbr_scrn_refresh: pwbr_elps_time = 0 pwbr_duration = 0 caption_pwr = "Power: " + str(pwbr_power) caption_dur = "Duration: " + str(pwbr_duration) caption_rfrsh = "Screen Refresh: " + str(pwbr_scrn_refresh) caption_etime = "Elapsed time: " + str(pwbr_elps_time) caption_ttl = "Total sec's: " + str(pwbr_ttl_sec) self.lblpower.text = "1234" ## self.lblduration = tk.Label(self, text=caption_dur, fg="black") ## self.lblrefreshrate = tk.Label(self, text=caption_rfrsh, fg="black") ## self.lbletime = tk.Label(self, text=caption_etime, fg="black") ## self.lbltotalsec = tk.Label(self, text=caption_ttl, fg="black") ## ## self.quitButton = tk.Button(self, text='Quit', command=self.quit) self.after(1000, self.update) # fn_pbtkwin_update() ---------------------------------------------------------- # Application() ---------------------------------------------------------------- app = Application() app.master.title("Power Bar") app.mainloop() pygame.time.wait(1000) pygame.display.set_mode((640, 480)) quit_loop = False while quit_loop is not True: for event in pygame.event.get(): if event.type == pygame.QUIT: # If user clicked close quit_loop = True # Flag that we are done so we exit this loop elif event.type == pygame.MOUSEBUTTONUP: pass elif event.type == pygame.constants.KEYDOWN: if event.key == pygame.constants.K_ESCAPE: quit_loop = True break elif event.key == pygame.constants.K_LEFT: kbd["left"] = True elif event.key == pygame.constants.K_RIGHT: kbd["right"] = True elif event.key == pygame.constants.K_UP: kbd["up"] = True elif event.key == pygame.constants.K_DOWN: kbd["down"] = True elif event.key == pygame.constants.K_SPACE: # Fire. kbd["fire"] = True elif event.key == pygame.constants.K_LCTRL: # Thrust. kbd["thrust"] = True elif event.key == pygame.constants.K_r: kbd["overload"] = True elif event.type == pygame.constants.KEYUP: if event.key == pygame.constants.K_LEFT: kbd["left"] = False elif event.key == pygame.constants.K_RIGHT: kbd["right"] = False elif event.key == pygame.constants.K_UP: kbd["up"] = False elif event.key == pygame.constants.K_DOWN: kbd["down"] = False elif event.key == pygame.constants.K_SPACE: # Fire. kbd["fire"] = False elif event.key == pygame.constants.K_LCTRL: # Thrust. kbd["thrust"] = False elif event.key == pygame.constants.K_r: kbd["overload"] = False # end if # end if # end for loop # { Paint some graphics on the screen. # ... # }. pygame.display.flip() # end while loop
That was brutal

import tkinter as tk import pygame pygame.init() pwbr_power = 0 pwbr_duration = 0 pwbr_scrn_refresh = 0 pwbr_elps_time = 0 pwbr_ttl_sec = 0 class Application(tk.Frame): def __init__(self, master=None): tk.Frame.__init__(self, master) self.grid() self.createwidgets() # __init__() --------------------------------------------------------------- def createwidgets(self): """ Creates the numerous widgets that make up the form. """ global pwbr_power, pwbr_duration, pwbr_scrn_refresh, pwbr_elps_time global pwbr_ttl_sec pwbr_power += 1 pwbr_duration += 0.15 pwbr_elps_time += pwbr_duration pwbr_scrn_refresh = 0.333 pwbr_ttl_sec += pwbr_elps_time if pwbr_elps_time > pwbr_scrn_refresh: pwbr_elps_time = 0 pwbr_duration = 0 caption_pwr = "Power: " + str(pwbr_power) caption_dur = "Duration: " + str(pwbr_duration) caption_rfrsh = "Screen Refresh: " + str(pwbr_scrn_refresh) caption_etime = "Elapsed time: " + str(pwbr_elps_time) caption_ttl = "Total sec's: " + str(pwbr_ttl_sec) self.lblpower = tk.Label(self, text=caption_pwr, fg="black") self.lblduration = tk.Label(self, text=caption_dur, fg="black") self.lblrefreshrate = tk.Label(self, text=caption_rfrsh, fg="black") self.lbletime = tk.Label(self, text=caption_etime, fg="black") self.lbltotalsec = tk.Label(self, text=caption_ttl, fg="black") self.quitButton = tk.Button(self, text='Quit', command=self.quit) self.lblpower.grid() self.lblduration.grid() self.lblrefreshrate.grid() self.lbletime.grid() self.lbltotalsec.grid() self.quitButton.grid() self.update() self.after(1000, self.update_info) # createwidgets() ---------------------------------------------------------- def update_info(self): """ Updates the status information in the tkinter window. """ global pwbr_power, pwbr_duration, pwbr_scrn_refresh, pwbr_elps_time global pwbr_ttl_sec pwbr_power += 1 pwbr_duration += 0.15 pwbr_elps_time += pwbr_duration pwbr_scrn_refresh = 0.333 pwbr_ttl_sec += pwbr_elps_time if pwbr_elps_time > pwbr_scrn_refresh: pwbr_elps_time = 0 pwbr_duration = 0 caption_pwr = "Power: " + str(pwbr_power) caption_dur = "Duration: " + str(pwbr_duration) caption_rfrsh = "Screen Refresh: " + str(pwbr_scrn_refresh) caption_etime = "Elapsed time: " + str(pwbr_elps_time) caption_ttl = "Total sec's: " + str(pwbr_ttl_sec) self.lblpower.config(text=caption_pwr) self.lblduration.config(text=caption_dur) self.lblrefreshrate.config(text=caption_rfrsh) self.lbletime.config(text=caption_etime) self.lbltotalsec.config(text=caption_ttl) self.after(1000, self.update_info) # update_info() ---------------------------------------------------------- # Application() ---------------------------------------------------------------- pygame.display.set_mode((640, 480)) app = Application() app.master.title("Power Bar") app.mainloop() quit_loop = False while quit_loop is not True: for event in pygame.event.get(): if event.type == pygame.QUIT: # If user clicked close quit_loop = True # Flag that we are done so we exit this loop elif event.type == pygame.MOUSEBUTTONUP: pass elif event.type == pygame.constants.KEYDOWN: if event.key == pygame.constants.K_ESCAPE: quit_loop = True break elif event.key == pygame.constants.K_LEFT: kbd["left"] = True elif event.key == pygame.constants.K_RIGHT: kbd["right"] = True elif event.key == pygame.constants.K_UP: kbd["up"] = True elif event.key == pygame.constants.K_DOWN: kbd["down"] = True elif event.key == pygame.constants.K_SPACE: # Fire. kbd["fire"] = True elif event.key == pygame.constants.K_LCTRL: # Thrust. kbd["thrust"] = True elif event.key == pygame.constants.K_r: kbd["overload"] = True elif event.type == pygame.constants.KEYUP: if event.key == pygame.constants.K_LEFT: kbd["left"] = False elif event.key == pygame.constants.K_RIGHT: kbd["right"] = False elif event.key == pygame.constants.K_UP: kbd["up"] = False elif event.key == pygame.constants.K_DOWN: kbd["down"] = False elif event.key == pygame.constants.K_SPACE: # Fire. kbd["fire"] = False elif event.key == pygame.constants.K_LCTRL: # Thrust. kbd["thrust"] = False elif event.key == pygame.constants.K_r: kbd["overload"] = False # end if # end if # end for loop # { Paint some graphics on the screen. # ... # }. pygame.display.flip() # end while loop