class, Window
Verfasst: Sonntag 14. Dezember 2014, 19:11
Hallo zusammen,
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:
Ich versuche #Temperatur und #Diagramm auf eine Seite zu bekommen - leider ohne Erfolg
Kan nmir jemand erklären was ic da falsch verstanden habe?
Danke im Voraus
Stoffl
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