2021年3月12日星期五

tkinter change frames with raspberry pi GPIO

Situation: I have tkinter program that has a bunch of frames with various labels and buttons on them. I want changing between them to be controlled by a 12 position switch via GPIO.

Problem: I can't figure out how to get the frames to change, or even to show up for that matter.

I've Tried: I read through this post: Switch between two frames in tkinter but I couldn't figure out how to adapt the code to my purpose.

For now I'm just manually assigning 'HIGH' or 'LOW' values to switch(sw) variables for testing and because I haven't wired the 12 position switch yet. I want to run though the sw variables and if there is a change bring the corresponding frame to the front. The data on the frames is stored so I don't mind destroying the frames that aren't being used.

My Code:

from tkinter import *    # functions  def raise_frame(frame):      frame.tkraise()    def switch_IO():      for page, position in zip(pages, sw_positions):          if position == "HIGH":              raise_frame(page)              print('frame: %s is %s' %(page, position))          else:              page.destroy()              print('frame: %s is %s' %(page, position))      root.after(18000, switch_IO)      print("*****RESTART******")  # variables  sw01 = "LOW"  sw02 = "LOW"  sw03 = "HIGH"  sw04 = "LOW"  sw05 = "LOW"  sw06 = "LOW"    # start tkloop  root = Tk()  root.geometry('1024x600')    f1_env = Frame(root, bg="red")  f2_fc = Frame(root, bg="blue")  f3_alert = Frame(root, bg="green")  f4_hl = Frame(root, bg="yellow")  f5_news = Frame(root, bg="purple")  f6_sys = Frame(root, bg="teal")  f7_set = Frame(root, bg="magenta")    f1_env.grid(row=0, column=0, sticky=N+S+E+W)  f2_fc.grid(row=0, column=0, sticky=N+S+E+W)  f3_alert.grid(row=0, column=0, sticky=N+S+E+W)  f4_hl.grid(row=0, column=0, sticky=N+S+E+W)  f6_sys.grid(row=0, column=0, sticky=N+S+E+W)  f7_set.grid(row=0, column=0, sticky=N+S+E+W)    # lists  sw_positions = [sw01, sw02, sw03, sw04, sw05, sw06]  pages = [f1_env, f2_fc, f3_alert, f4_hl, f5_news, f6_sys]    # function calls  raise_frame(f1_env)  switch_IO()  root.mainloop()  
https://stackoverflow.com/questions/66576772/tkinter-change-frames-with-raspberry-pi-gpio March 11, 2021 at 01:03PM

没有评论:

发表评论