【问题标题】:tkinter change frames with raspberry pi GPIOtkinter 使用树莓派 GPIO 更改帧
【发布时间】:2023-03-29 17:20:02
【问题描述】:

情况:我的 tkinter 程序有一堆框架,上面有各种标签和按钮。我希望通过 GPIO 由 12 位开关控制它们之间的切换。

问题:我不知道如何让框架改变,甚至显示出来。

我试过了:我通读了这篇文章:Switch between two frames in tkinter,但我不知道如何使代码适应我的目的。

现在我只是手动将“HIGH”或“LOW”值分配给开关(sw)变量以进行测试,因为我还没有连接 12 位开关。我想通过 sw 变量运行,如果有变化,将相应的框架放在前面。框架上的数据已存储,因此我不介意销毁未使用的框架。

我的代码:

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()

【问题讨论】:

    标签: python tkinter raspberry-pi gpio


    【解决方案1】:

    我想我成功了。我有点担心内存泄漏,但我必须做一些长期测试才能确定。

    def switch_IO():
        for page, position in zip(pages, sw_positions):
            if position == "HIGH":
                page.tkraise()
                print('frame: %s is %s' %(page, position))
        root.after(1800, switch_IO)
        print("*****RESTART******")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 2017-10-25
      • 2013-11-23
      相关资源
      最近更新 更多