У меня проблема с моим кодом. Я пытаюсь считывать измерения напряжения с моего АЦП и получать среднее значение из каждых 100 показаний, а затем отображать среднее значение на экране по умолчанию. Предполагается, что процесс повторяется, и метка должна обновляться каждые 0,5 секунды. Однако мой ярлык даже не отображается на экране.
Вот некоторые фрагменты моего кода
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import matplotlib.animation as animation
from matplotlib import style
import tkinter as tk
from tkinter import ttk
from matplotlib import pyplot as plt
import time
import Adafruit_ADS1x15
adc = Adafruit_ADS1x15.ADS1115()
GAIN = 1
LARGE_FONT = ('Verdana', 18)
NORM_FONT = ('Verdana', 14)
SMALL_FONT = ('Verdana' , 11)
MENU_FONT= ('Arial', 12, "bold")
def update_label(label):
def getvoltage():
readings = [0]*100
maxsample = 100
counter = 0
while (counter < maxsample):
reading = adc.read_adc(0, gain=GAIN)
readings.append(reading)
counter += 1
avg = sum(readings)/100
voltage = (avg * 0.1259)/100
readings.clear()
label.config(text=str('Voltage: {0:.2f}'.format(voltage)))
label.after(500, getvoltage)
class Controller(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
tk.Tk.wm_title(self, "Controller")
container = tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0,weight=1)
self.show_frame(DefaultScreen)
class DefaultScreen(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
self.configure(bg="white")
f = Figure(figsize = (10,3), dpi=100)
a = f.add_subplot(111)
a.plot([1,2,3,4,5,6,7,8],[2,4,6,8,10,12,14,16])
button1 = ttk.Button(self,text="Contact Page",
command=lambda:controller.show_frame(ContactPage))
button1.pack(anchor="se", pady=10, padx=10)
ventilatorstatus="Ventilator Status: Closed"
ventstatus= tk.Label(self, text=ventilatorstatus, font=LARGE_FONT, bg="white")
ventstatus.place(relx=0.5, rely=0.15, anchor="center")
voltage_label = tk.Label(self, font=LARGE_FONT, bg="white")
voltage_label.place(relx=0.5, rely= 0.22, anchor="center")
update_label(voltage_label)
canvas= FigureCanvasTkAgg(f, self)
canvas.show()
canvas.get_tk_widget().pack(anchor="s", fill=tk.X, expand=True, pady=20)
app = Controller()
app.attributes('-fullscreen', True)
app.mainloop()
Было бы замечательно, если бы кто-нибудь сказал мне, что я делаю неправильно ..
Спасибо:)