ich habe mir das Buch Raspberry Pi - programmieren mit Python zugelegt.
Nun wollte ich zwei "Scripte" in einem Fenster laufen lassen.
Im Buch wurden daszu pro Script eine Calss mit einem neuen Window gemacht.
Nun habe ich versucht das ganze in einem Fenster zu realisieren, leider ohne Erfolg.
Hier meine Ergebnise:
Code: Alles auswählen
from tkinter import *
from tkinter import messagebox
import time
from temperature import TempDevices
from tkinter import *
import time, _thread
def About(message=None,title='Über'):
messagebox.showinfo("Über")
#Fenster
root = Tk()
root.title('RPI')
root.resizable(width=FALSE, height=FALSE)
root.geometry('600x500')
#Menu
menu = Menu(root)
root.config(menu=menu)
filemenu = Menu(menu)
menu.add_cascade(label="Datei", menu=filemenu)
filemenu.add_command(label="Schließen", command=root.quit)
extramenu = Menu(menu)
menu.add_cascade(label="Extras", menu=extramenu)
extramenu.add_command(label="Export USB Stick")
extramenu.add_command(label="Einstellungen")
helpmenu = Menu(menu)
menu.add_cascade(label="Hilfe", menu=helpmenu)
helpmenu.add_command(label="Über", command=About)
# End Menu
mainloop()
# Anzeige Temparaturen 1
class App:
def __init__(self):
self.window = Tk()
self.tempLabels = [Thermometer(self.window, t)
for t in TempDevices()]
for t in self.tempLabels: t.pack()
self.window.mainloop()
class Thermometer(Label):
def __init__ (self, window, tempDevice):
Label.__init__(self, font=("Arial", 20), width=12)
self.window = window
self.device = tempDevice
self.update()
def update(self):
text = str(round(self.device.read(), 2)) + " °C"
self.config(text=text)
self.window.after(1000, self.update)
App()
# Diagramm
class Plotter:
def __init__(self):
self.colors = ["red", "green", "blue", "black"]
self.window = Tk()
self.c = Canvas(master=self.window, width = 320,
height= 250, bg="white")
self.c.create_text(20, 20, text="30 °C")
self.c.create_text(20, 220, text="20 °C")
self.c.pack()
t = TempDevices()
self.pens = []
for i in range(len(t)):
self.pens.append(Pen (self.c,
t[i], self.colors[i%4]))
_thread.start_new_thread(self.update, ())
self.window.mainloop()
def update(self):
while True:
for i in range(60):
for pen in self.pens:
pen.draw(i*5)
time.sleep(1)
self.c.delete("point")
class Pen:
def __init__ (self, canvas, tempDevice, color):
self.canvas = canvas
self.device = tempDevice
self.color = color
def draw(self, x):
y = 400 + 220 - self.device.read() * 20
self.canvas.create_line(x, y, x+3, y, width=3,
fill=self.color, tag="point")
Plotter()
mainloop()
Kan nmir jemand erklären was ic da falsch verstanden habe?
Danke im Voraus
Stoffl