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
没有评论:
发表评论