Apr-03-2019, 06:26 AM
Hi jpezz
On my side this alteration is working perfectly. Here i place the modified script. The count down starts at 40 in green. With 30 the color of the figures in the label change to yellow (Yellow on a white background is not the best contrast). Reaching 15 the color does change to red. To avoid the import of all parameter i have placed a test line in the script!
On my side this alteration is working perfectly. Here i place the modified script. The count down starts at 40 in green. With 30 the color of the figures in the label change to yellow (Yellow on a white background is not the best contrast). Reaching 15 the color does change to red. To avoid the import of all parameter i have placed a test line in the script!
# 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] # Test line to bypass the argv parameter import! Timer_length, Xsize, Ysize, Xoffset, Yoffset = [40, 300, 300, 100, 100] # # 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) label.pack(fill='x', padx=5, pady=5) # # The line below is a test to see if the color changes # label.config(fg='green') count_down() # start the GUI event loop root.mainloop()wuf :-)