Давно боролся с этим, кто-то может указать мне правильное направление.Я пытаюсь установить приложение, которое при срабатывании датчика pir, подключенного к Rasberry Pi, открывает рамку с 7 кнопками на нем.Я хочу, чтобы кнопки при нажатии открывали отдельные кадры, в которые я хочу прикрепить изображение.Я хочу, чтобы рамка исчезла через определенное время.
Теперь я могу сделать это на стартовой странице без проблем, создав рамку и холст и загрузив изображение, а затем используя after с помощью destroy, чтобы избавиться от него после7 секунд.
Однако, как только я пытаюсь привести другие кадры в уравнение, я не могу заставить холсты или изображения работать во вторичных кадрах.Я изменил свой нынешний подход, который я изложил в предложениях (уход за учебником на линии), но тупик там тоже.
Я не уверен, но у меня такое ощущение, что с классами я теперь установил отношения ведущий-ведомый с кадрами, что означает, что я не могу настроить их индивидуально?Я приложил код, с которым я сейчас играю, который относится к фреймам.Если кто-то может дать совет, мы будем очень признательны.
import tkinter as tk
from tkinter import *
LARGE_FONT= ("Verdana", 12)
class SeaofBTCapp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(100, weight=1)
container.grid_columnconfigure(100, weight=1)
self.frames = {}
for F in (StartPage, PageOne, PageTwo, PageThree, PageFour, PageFive, PageSix, PageSeven):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
label = tk.Label(self, text="SMART BIN Tech", font=LARGE_FONT)
label.pack(pady=10,padx=10)
button = tk.Button(self, text="NO DRINKS or FOOD WASTE",
command=lambda: controller.show_frame(PageOne))
button.pack()
button2 = tk.Button(self, text="NO PAPER WASTE",
command=lambda: controller.show_frame(PageTwo))
button2.pack()
button3 = tk.Button(self, text="NO TEA BAGS",
command=lambda: controller.show_frame(PageThree))
button3.pack()
button4 = tk.Button(self, text="NO CANS or PLASTICS",
command=lambda: controller.show_frame(PageFour))
button4.pack()
button5 = tk.Button(self, text="LIST of RECYCLABLES",
command=lambda: controller.show_frame(PageFive))
button5.pack()
button6 = tk.Button(self, text="Vending Area Performance",
command=lambda: controller.show_frame(PageSix))
button6.pack()
button7 = tk.Button(self, text="UBS UK RATIO",
command=lambda: controller.show_frame(PageSeven))
button7.pack()
class PageOne(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="NO DRINKS or FOOD WASTE", font=LARGE_FONT)
label.pack(pady=10,padx=10)
button1 = tk.Button(self, text="Back to Home",
command=lambda: controller.show_frame(StartPage))
button1.pack()
class PageTwo(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="NO PAPER WASTE", font=LARGE_FONT)
label.pack(pady=10,padx=10)
button1 = tk.Button(self, text="Back to Home",
command=lambda: controller.show_frame(StartPage))
button1.pack()
class PageThree(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="NO TEA BAGS", font=LARGE_FONT)
label.pack(pady=10,padx=10)
button1 = tk.Button(self, text="Back to Home",
command=lambda: controller.show_frame(StartPage))
button1.pack()
class PageFour(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="NO CANS or PLASTICS", font=LARGE_FONT)
label.pack(pady=10,padx=10)
button1 = tk.Button(self, text="Back to Home",
command=lambda: controller.show_frame(StartPage))
button1.pack()
class PageFive(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="RECYCLABLES", font=LARGE_FONT)
label.pack(pady=10,padx=10)
button1 = tk.Button(self, text="Back to Home",
command=lambda: controller.show_frame(StartPage))
button1.pack()
class PageSix(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="Vending Area Performance", font=LARGE_FONT)
label.pack(pady=10,padx=10)
w = tk.Canvas(self,width=400,height=500)
w.pack
button1 = tk.Button(self, text="Back to Home",
command=lambda: controller.show_frame(StartPage))
button1.pack()
class PageSeven(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="UBS UK RATIO", font=LARGE_FONT)
label.pack(pady=10,padx=10)
canvas = tk.Canvas(self,width=100, height=100)
canvas.pack
button1 = tk.Button(self, text="Back to Home",
command=lambda: controller.show_frame(StartPage))
button1.grid(row=2, column=5)
button1.pack()
app = SeaofBTCapp()
app.mainloop()