Apr-09-2021, 04:12 PM
(Apr-09-2021, 03:25 PM)BashBedlam Wrote: I don't have a sense hat to work with but I can tell you thatafter ()
does not work like you think it would. The first time that you callcanvas.after (500)
it will wait half a second but the next time you call it, it will not seem to work at all because it only waited the same half a second, not a whole second. To work with this you have to add time each time you call it.
My code below simply increments the values inorientationData
instead of getting it from the sense hat but the concept is the same. I hope this helps.
from tkinter import * # Create a container for everything canvas = Tk() def UpdateOrientationDate(): #Reaquire the orientation data for key, value in orientationData.items () : orientationData [key] = value + 1 #Update the labels with orientation data from the trycorder pitchLabel.config(text=str(round(orientationData["pitch"], 0))) rollLabel.config(text=str(round(orientationData["roll"], 0))) yowLabel.config(text=str(round(orientationData["yaw"], 0))) #Get intital orientation orientation data from the trycorder orientationData = {"pitch": 7, "roll": 8, "yaw": 9} # Pre-populate the Labels with data for orientation from the trycorder pitchLabel = Label(canvas, width = 9, text="0") rollLabel = Label(canvas, text="0") yowLabel = Label(canvas, text="0") #Place the labels on the grid pitchLabel.grid(row=0, column=0) rollLabel.grid(row=1, column=0) yowLabel.grid(row=2, column=0) wait_time = 0 for count in range (13) : wait_time += 500 canvas.after (wait_time, UpdateOrientationDate) canvas.mainloop()
Hi BashBedlam
Thanks for the replay I found the answer via trial and error and got the following
from sense_hat import SenseHat from tkinter import * from tkinter.ttk import * # Create a container for everything canvas = Tk() canvas.title("Sense Hat test") # Create a path to the sensors trycorder = SenseHat() def UpdatePitchData(): #Reaquire the orientation data data = trycorder.get_orientation() #Update the labels with orientation data from the trycorder p = str(round(data["pitch"],0)) pitchLabel.config(text="Pitch = " + p) pitchLabel.after(100, UpdatePitchData) def UpdateRollData(): #Reaquire the orientation data data = trycorder.get_orientation() #Update the labels with orientation data from the trycorder r = str(round(data["roll"], 0)) rollLabel.config(text="Roll = " + r) rollLabel.after(100, UpdateRollData) def UpdateYawData(): #Reaquire the orientation data data = trycorder.get_orientation() #Update the labels with orientation data from the trycorder y = str(round(data["yaw"], 0)) yowLabel.config(text="Yaw = " + y) yowLabel.after(100,UpdateYawData) # Pre-populate the Labels with data for orientation from the trycorder pitchLabel = Label(canvas) rollLabel = Label(canvas) yowLabel = Label(canvas) #Place the labels on the grid pitchLabel.grid(row=0, column=0) rollLabel.grid(row=1, column=0) yowLabel.grid(row=2, column=0) UpdatePitchData() UpdateRollData() UpdateYawData() mainloop()