Apr-02-2019, 08:47 PM
This is my code.
# tk_counter_down101.py # count down seconds from a given minute value # using the Tkinter GUI toolkit that comes with Python # tested with Python27 and Python33 # # # Modified by J. Pezzano - 4/02/19 # # run command: python3 Countdown_Timer.py [X Size] [Y Size] [X offset] [Y offset] [Timer Start] # # Python3 import tkinter as tk #import ttk import sys import os import time import signal # Get variables # Timer_length=sys.argv[1] Timer_length=int(Timer_length) Xsize=sys.argv[2] Ysize=sys.argv[3] Xoffset=sys.argv[4] Yoffset=sys.argv[5] filename=sys.argv[6] # # Handle a Signal if we get a 'kill 2' or a 'kill, the latter is a 'kill 15' # def receiveSignal(signalNumber, frame): global CurrentCount print('Received:', signalNumber) file = open(filename, "w") file.write(str(CurrentCount)) file.close() exit(0) return def count_down(): global Number_Color global CurrentCount global root for CurrentCount in range(Timer_length, -1, -1): if (CurrentCount is 30): colourUpdate('yellow') print ('Updated color') fg=Number_Color.get() print (CurrentCount,fg) elif (CurrentCount is 15): colourUpdate('red') # format as 2 digit integers, fills with zero to the left # divmod() gives minutes, seconds sf = "{:02d}:{:02d}".format(*divmod(CurrentCount, 60)) #print(sf) # test time_str.set(sf) root.update() # delay one second time.sleep(1) # # Set that we want to handle some signals # signal.signal(signal.SIGINT, receiveSignal) signal.signal(signal.SIGTERM, receiveSignal) # # create root/main window root = tk.Tk() Number_Color=tk.StringVar() Number_Color.set('blue') print (Number_Color.get()) def colourUpdate(color): global root global label Number_Color.set(color) fgx=Number_Color.get() print ('color: ',fgx) label.config(fg = Number_Color.get()) root.update() return root.overrideredirect(1) # Set geometry size and location of Picture root.geometry('%sx%s+%s+%s' % (Xsize, Ysize, Xoffset, Yoffset)) time_str = tk.StringVar() # create the time display label, give it a large font # label auto-adjusts to the font label_font = ('helvetica', 40) label=tk.Label(root, textvariable=time_str, font=label_font, bg='white', fg=Number_Color.get(), relief='raised', bd=3).pack(fill='x', padx=5, pady=5) # # The line below is a test to see if the color changes # label.config(fg = 'yellow') count_down() # start the GUI event loop root.mainloop()After creating the Label, it calls function count_down which loops. If the count reaches 30 or 15, then color_update is called. The config fails so I tried immediately calling it after creating the widget
label=tk.Label(root, textvariable=time_str, font=label_font, bg='white', fg=Number_Color.get(), relief='raised', bd=3).pack(fill='x', padx=5, pady=5) # # The line below is a test to see if the color changes # label.config(fg = 'yellow')and it also fails with this error. What's wrong?
Quote:Traceback (most recent call last):
File "Countdown_Timer.py", line 101, in <module>
label.config(fg = 'yellow')
AttributeError: 'NoneType' object has no attribute 'config'