Beiträge von noisefloor

    Hallo,


    ThomasL : die GPL regelt ja sehr genau, wie Code, der aus GPL lizenziertem Code abgeleitet ist, zu lizenzieren ist - nämlich auch unter der gleichen Lizenz. Damit bleibt freie Software freie Software. Was auch gut ist. Die MIT Lizenz z.B. ist da liberaler / unkritischer und erlaubt auch die Verwendung von Code in closed Source Software.


    Der Punkt ist: wenn du die GPL nutzt und zufällig raus findest, dass jemand deinen Code modifiziert in closed Source Software verwendet - gehst du dann rechtliche Schritte? Wenn nein hättest du die GPL ja "nur" als Abschreckung genutzt, aber nicht konsequent umgesetzt. Und das ist IMHO der Punkt, wo man sich im klaren drüber sein muss, was man will bzw. bereit ist, zu wollen.


    Wenn man sich mit dem Thema eigentlich gar nicht so richtig beschäftigen möchte, fährt man mit einer liberalen Lizenz IMHO besser.


    Gruß, noisefloor

    Hallo,

    Was vestehst Du in diesem Zusammenhang unter "restriktiver"?

    Das bezieht sich darauf, wie (meinen) Code oder Teile davon in anderen Projekten weiterverwendet werden kann bzw. unter welchen Bedingungen.

    Da ist die GPL ja deutlich restriktiver als z.B. die MIT Lizenz.


    Was keine Wertung der Lizenz ist, nur wenn ich meinen Code unter GPL stellen, eine Lizenzverletzung vorliegt, weil der Code außerhalb des von der GPL erlaubten verwendet wird, ich aber dann keine rechtlichen Schritte unternehmen will (oder kann), dann hätte man sich IMHO auch die GPL als ausgewählte Lizenz sparen können.


    Gruß, noisefloor

    Hallo,


    Hofei : wenn du Code "richtig" veröffentlichst (also bei Github oder so, nicht "nur" als Forenpost), dann solltest du eine Lizenz wählen.


    Die Wahl der Lizenz hängt IMHO in erster Linie davon ab, wie konsequent du eine mögliche rechtliche Durchsetzung verfolgen willst. Eine restriktivere Lizenz ist GPL ist nicht viel Wert, wenn du dir zur Verfügung stehenden rechtlichen Mittel nicht nutzen würdest, im Falle einer Lizenzverletzung.


    Ich habe 2x Code in Form von Python-Modulen veröffentlich und habe die sehr liberale MIT Lizenz gewählt. Zum einem, weil ich die Schöpfungshöhe des Codes jetzt nicht für sooo schützenswert hielt, zum anderen weil ich so wie so kaum einen Rechststreit mit Klage, Anwalt etc anfangen wollte.

    Persönlich hätte ich auch nichts gegen "Public Domain", aber das ist meine ich keine gültige "Lizenz" in Deutschland?


    Die IMHO beste "Startseite" für OSS Lizenzen ist: https://opensource.org/licenses


    Gruß, noisefloor

    Hallo,


    ein paar Anmerkungen:


    • Wenn man`global`benutzt, hat man zu 99% was falsch gemacht, weil man `global` normalerweise nicht benutzen will. Das macht den Zustand des Programms unübersichtlich.
    • Wenn `status` nur den Zustand 0 und 1 haben kann, dann nimm' dafür eine Variable vom Typ bool. Und selbst wenn es noch andere Werte haben könnte, dann nimm' dafür ein Integer und keinen String.
    • Das ganz if - else Handling für `status` ist soweit ich das versteht überflüssig. `status` kann doch nur 0 sein, wenn du `alarmauslösung` betritts und kann nur 1 sein, wenn du `reseta` betritts.
    • Kryptische Variablennamen vermeiden. Was soll das x Präfix bei `xtext`? Wofür steht das a bei `reseta`?
    • Variablen dürfen Unterstriche enthalten. `probezeitraum_ein` ist auch deutlich besser lesbar als `probezeitraumein`.
    • Strings setzt man mit deren `format`-Methode zusammen, nicht mit + oder so.


    Gruß, noisefloor

    Hallo,


    tkinter kennt eine Listbox für solche Darstellung. Ob man die Einträge ohne größere Verrenkungen "clickable" machen kann weiß ich nicht, aber du könntest unter die Listbox einen Button "Abspielen" oder so einfügen, der den Eintrag dann im Audioplayer abspielt.


    Ein Minimalbeispiel, wie so was aussehen kann findest du in der Doku von tkinter.


    Gruß, noisefloor

    Hallo,


    die Meldung besagt ja relativ eindeutig, dass du in der / den Konfig-Datei(en) 2x die Direktive "default server" hast, die darf es aber nur 1x geben. Danach musst du Suchen und das Problem beheben (=doppelt / falsche Zeile löschen).


    Wenn du die beiden in der Fehlermeldung angegebenen Dateien hier postest, brauchst du nicht alle Suchen...


    Gruß, noisefloor

    Hallo,


    Zitat

    Also da ich Blutiger Anfänger bin und nur gelegentlich daran Probiere weis ich nicht was "Dict" ist.

    Gut. Dann würde ich vorschlagen: stopp alle dein Programmieraktivitäten mit Python temporär und arbeite das von Linus genannten Python-Tutorial durch. Ein Dict (Kurzform für Dictionary) ist einer _der_ grundlegenden Datenstrukturen in Python. Wenn du die nicht kannst, hast du was verpasst.


    Und wenn du, wie du sagst "blutiger Anfänger" bist, dann ist das vielleicht auch nicht der richtige Zeitpunkt, sich mit Vererbung bei Klassen zu beschäftigen. Und wieso brauchst du zwei Klassen?


    Zitat

    Diese Zahl wird aus einer ständig Wachsenden Datenbank in Spalte eins(A) gesucht

    Warum machst du die Abfrage dann nicht gegen die Datenbank? Das sollte schneller (und einfacher) sein als der Umweg via CSV-Datei.


    Gruß, noisefloor

    Hallo,


    dein Anwendung ist bis jetzt für den Desktop geschrieben, Webprogrammierung läuft anders. a) ist deine GUI schon mal (zwangsläufig) in HTML+CSS geschrieben, b) brauchst du ein Webframework. Flask oder Bottle sind bei so Sachen eine gute Wahl.


    Du könntest natürlich gleiche Code-Teile in beiden Programmen haben, WENN du die Programmlogik von der Ausgabe der Daten trennst.


    BTW: wenn das Programm oben alles ist, dann kannst du das auch relativ einfach in HTML+CSS+JavaScript umsetzen.


    BTW 2: der Code ist nicht gut. Bei GUI Programmierung mit Python möchtest du einen Klassen-basierten Ansatz wählen, keinen Spaghetti-Code Ansatz wie deinen. a) ist dein Code schlecht wartbar und b) - schlimmer - kommst du sehr schnell an den Punkt, wo das nicht mehr vernünftig erweiterbar ist.


    Gruß, noisefloor

    Hallo,


    rho : zu dem Zeitpunkt, wo du versuchst, eine Methode der Instanz der Klasse aufzurufen, läuft die GUI noch nicht, weil der Mainloop nicht gestartet ist.


    Aber, wie gesagt, so wie du das machst, macht man das so wie so nicht, weil schlechter Still. Die Klasse ist dazu da, alle Funktionalitäten zu kapseln. Ein Teil in der Klasse und ein Teil außerhalb mag irgendwie funktionieren, hat aber außer Durcheinander keinen Mehrwert.


    Zitat

    In Deinem Script weiter vorne steht die Aktion des Programms in den Zeilen 19 - 21. Diese läuft automatisch ab. Ich wollte diese Automatik durch eine Benutzersteuerung ersetzen an genau dieser Stelle.

    Verstehe ich nicht. Das Sktript von bootsmann macht genau das, was du auch versucht hast: nach Druck auf die Schaltfläche die Farbe wechseln.


    Gruß, noisefloor

    Hallo,


    du solltest schon alles in die Klasse packen. An das Event der angeklickten Schaltfläche bindest du dann eine Methode aus der Klasse, die Farbe und Label ändert.


    Gruß, noisefloor

    Hallo,


    im Zweifelsfall muss den Callback-Funktionen die Parameter über `partial` aus dem `functools` Modul mitgeben. Dazu gibt's auch Beispiele hier im Forum.


    Thonny hat mit deinen Problemen bzw. Schwierigkeiten nichts zu tun. Eine IDE macht das Programmieren zwar einfacher, aber Code nicht lauffähiger ;-)


    python-kurs.eu hat in Teilen einen schlechten Ruf, weil da in manchen Kapiteln schlechtes, weil nicht-idomatisches Python gezeigt wird. Was man als Einsteiger aber nicht sieht und damit ggf. falsch lernt. Also: lieber die Finger davon lassen.


    Gruß, noisefloor

    Hallo,


    Zitat

    button_runter.when_pressed == True:

    Das kann auch nicht funktionieren. Mit `button.when_pressed = irgendwas` bindest du die Funktion `irgendwas` an das Event des Tastendrucks. Sprich, wenn `button` gedrückt wird, dann wird die Funktion aufgerufen.


    Wenn du abfragen willst, ob der Button jetzt gedrückt ist, dann wäre das


    Python
    1. if button.is_pressed:
    2. #do somesomthing

    Grundsätzlich ist der Ansatz in #4 auch nicht besser, weil du vom richtigen / besseren Event-getriebenen Ansatz in #1 auf Polling umgestiegen bist. Was in so fern schlechter, als dass dein Skript permanent "rennt", während es beim Event-getriebenen Ansatz tatsächlich auf die Tastendruckevents warten würde.


    Gruß, noisefloor

    Hallo,

    und hatte ich auch probiert..

    Was heißt denn "probiert"? Davon wird ja nichts besser. Du musst dann die explizit genannten Fehler schon händisch beheben. Nur weil du nginx mit dem Parameter -t startest, behebt sich das ja nicht auto-magisch.


    Also:

    • mehr Eigeninitiative
    • Wenn Fehler auftreten: hier vollständig posten
    • und am besten die entsprechende Datei auch


    Gruß, noisefloor

    Hallo,


    Zitat

    Wie kann ich die Global Variable taste_gedrueckt für die Interruptauswertung der Tasten vermeiden? Habe keinen anderen Weg gefunden, den Interrupt in das Hauptprogramm zu bekommen

    Indem du das, was beim Tastendruck gemacht werden soll, in die Funktion packst? Das aktuelle Vorgehen ist ein bisschen kompliziert und wegen `global` schlecht.


    Ansonsten: keine nackten `try...except` und aussagekräftige Variablennamen benutzen. Bei `temper` und `luftfeu` sind dir auf dem Weg dahin scheinbar die Buchstaben ausgegangen... ;-) Und die überflüssigen Kommentare entfernen, macht den Quelltext besser lesbar. Wenn das z.b. `while True` steht, dann brauchst du davor nicht `#Schleife ` schreiben. Das hat null Mehrwert weil so was von offensichtlich.


    Gruß, noisefloor

    Hallo,


    heguenter : ohne Englisch kommst du nun mal nicht weiter. Das ist DIE Sprache, in der der IT-Dokumentation. Du musst es ja nicht sprechen oder schreiben können, aber die Bereitschaft zum lesen und verstehen muss da sein. Sonst ist das der Punkt, an dem du immer scheitern wirst.


    Auch die Wiki-Seite von ubuntuusers.de zu nginx kratzt ja letztendlich nur an der Oberfläche rum.


    Tipp zum Testen: anstatt nginx per Trial & Error über die systemd Service Unit zu starten, nutz' den Befehl zum Testen der Config, den nginx kennt. Ist bei uu.de erklärt. Dann bekommst du nämlich nur die Fehlermeldung, ohne die ganzen Status-Meldungen von systemd.


    Gruß, noisefloor

    Hallo,


    was grundsätzlich auch zu bedenken ist: das Raspi ist ja keine Rakte, was das Booten angeht. Heißt: bevor irgendwas läuft, werden je nach Raspi Modell sicherlich geschätzt 30 - 60 Sekunden vergehen.


    Wenn du die Kiste schließt, dauert das Herunterfahren ja auch. Heißt, Kiste kurz hintereinander schließen und wieder öffnen geht auch nicht.


    Gruß, noisefloor