hab vor kurzem es endlich geschafft mir eine vernuenftige
pythonlektuere zu kaufen und bin jetzt bei gui programmierung gelandet.
da wir in phyik immo wellen durchnehmen und interferenzen.
jedenfalls habe ich vor ein script zum simulieren solcher interferenzen
bei 2 oder mehr zentren zu schreiben.
bisher bin ich so weit gekommen:
das script laesst die weisse flaeche auf knopfdruck sinusartig dunkler werden und wieder aufhellen,
praktisch wie ein einzelner punkt auf einer welle, der sich auf und ab bewegt (je heller desto hoeher)
ich hab zuerst alles normal geschrieben und dann in eine klasse gepackt,
aber ich fuehl mich nicht ganz so wohl dabei, so viele "self"s und beenden
kann man das script auch nicht schoen, es haengt sich bei mir dann immer auf.
die funktion getColor ist gewollt fuer alle farben ausgelegt,
obwohl ich nur graustufen brauche, aber spezieller kann ich immernoch werden.
generell waeren ein paar tips ganz nett und vielleicht ein hinweis, wie ich denn
mein projekt ueberhaupt sinnvoll weiterfuehren soll.
danke schon mal im vorraus.
Code: Alles auswählen
from Tkinter import *
from math import cos
class SW_test(object):
def __init__(self, freq=0.002):
self.freq = freq
self.an = self.winkel = 0 #winkel der cosinusfunktion
#an/ausschaltvariable
self.fenster = Tk()
self.SWlabel = Label(self.fenster, width = 100, \
height = 10, bg = "#ffffff")
self.SWlabel.pack()
self.schalter = Button(self.fenster, text="Helligkeitswechsel An/Aus", \
command = self.farbwechsel)
self.schalter.pack()
def getColor(self, r, g, b):
red = hex(r).lstrip("0x").zfill(2) #wandle in hex um, entferne '0x'
green = hex(g).lstrip("0x").zfill(2) #und fuelle fehlende nullen auf
blue = hex(b).lstrip("0x").zfill(2)
return "#" + red + green + blue #gebe im format #rrggbb zurueck
def farbwechsel(self):
self.an = 1 - self.an #schaltet an zwischen 0 und 1 um
while self.an: #solange an:
self.col = int(127 * (1 + cos(self.winkel))) #erzeuge wert fuer die graustufe
self.col = self.getColor(self.col, self.col, self.col) #hole hex-farbcode
self.winkel += self.freq #winkel erhoehen (hoehere zahl, hoehere frequenz
self.SWlabel.config(bg=self.col) #hintergrundfarbe aktualisieren
self.fenster.update() #label neu zeichnen
def start(self):
self.fenster.mainloop()
if __name__ == '__main__':
helligkeitstest = SW_test(0.002) #geschwindigkeit
helligkeitstest.start()