TAKEaBREAK

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten

Was für Pausen sind sinnvoll?

5min alle 25min
3
14%
5min alle 55min
6
29%
10min alle 110min
2
10%
nur Mittagspause
3
14%
Ich schlafe nichtmal
7
33%
 
Insgesamt abgegebene Stimmen: 21
Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

Dieses Programm sorgt dafür, dass man nicht vergisst Pausen zu machen.

Ich habe gehört, dass Programmierer Unterbrechungen nicht mögen
aber für kreative Aufgaben und vieles andere sind Pausen wichtig.
Da ich ständig vergesse diese einzuhalten habe ich mir dieses Programm
geschrieben und es leistet mir treue Dienste im Autostart. :)


Code: Alles auswählen

# TAKEaBREAK_0.05.pyw
# (cc) Creative Commons Version 3.0


import Tkinter as tk
import os
if os.name == 'nt':
    import winsound as ws
else:
    pass

class App():
    def __init__(self):
        self.root = tk.Tk()
        self.arbeitszeit = 25       # Arbeitszeit in Minuten
        self.pausenzeit = 5         # Pausenzeit in Minuten
        self.start = 1
        
    def arbeiten(self):
        self.root.withdraw()
        # Piepen (beim ersten Start verhindern)
        if self.start == 1:
            self.start += 1
        else:
            if os.name == 'nt':
##                ws.Beep(1000,5)         # Bueromodus (dezent)
                ws.Beep(1000,500)       # Zuhause-Modus (deutlich)
            else:
                pass
            
        self.root.after(int(1000*60*self.arbeitszeit), self.pause)
        
    def pause(self):
        # Hellgraues Vollbild fuer n-Minuten
        self.root.deiconify()
        self.root.overrideredirect(1)
        w, h = self.root.winfo_screenwidth(), self.root.winfo_screenheight()
        self.root.geometry("%dx%d+0+0" % (w, h))
        self.root.focus_set()
##        self.root.bind('<Escape>', lambda e: e.widget.quit())

        self.root.after(int(1000*60*self.pausenzeit), self.arbeiten) 

    def ready(self):
        self.root.mainloop()
        
a =App()
a.arbeiten()
a.ready()
Leider bleibt die Startleiste spätestens beim zweiten Zyklus sichtbar.
Was habe ich an dieser Stelle falsch gemacht?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Janux hat geschrieben:Ich habe gehört, dass Programmierer Unterbrechungen nicht mögen
aber für kreative Aufgaben und vieles andere sind Pausen wichtig.
Wenn mir mal ausnahmesweise etwas gut von der Hand geht (was in letzter Zeit hauptsächlich in Scheme passiert, in Python eher selten, da ich recht oft auf schwierigere Probleme treffe) dann könnte ich es nicht leiden alle paar Minuten Pause zu machen, gerade wenn ich die entsprechende Stelle in der Dokumentation gefunden habe und den Code ausprobieren will.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Warum fragst Du auf ``os.name == 'nt'`` ab statt einfach `winsound` zu importieren? Es gibt auch Fälle wo `os.name` nicht 'nt' ist und trotzdem das Modul existiert. Ich würd's so machen:

Code: Alles auswählen

try:
    from winsound import Beep
except ImportError:
    Beep = lambda a, b: None
Und schon gibt es im weiteren Verlauf auf jeden Fall eine `Beep()`-Funktion und man braucht das nirgends mehr überprüfen.

Das Programm selbst finde ich schröcklich. Wenn mir mitten in die Arbeit ein Vollbild-Fenster knallt, beisse ich spätestens nach dem dritten mal wutentbrannt in die Tastatur. Falls man überhaupt so eine Holzhammermethode implementiert, muss es eine angemessene, nicht so aufdringliche Vorwarnung geben.

Das geht nicht nur Programmierern, sondern auch Kreativen so. Man kann nicht einfach mitten in einem Absatz oder einer Grafikoperation so abrupt aufhören.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Schau mal hier: http://www.workrave.org
Das prüft, ob du schon zu lange tippst (alles einstellbar).
Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

BlackJack hat geschrieben:Warum fragst Du auf ``os.name == 'nt'`` ab statt einfach `winsound` zu importieren?
Weil ich irgendwann mal meine Linux Treiber installieren will
und das Programm vlt dann auch da benutze^^
Es gibt auch Fälle wo `os.name` nicht 'nt' ist und trotzdem das Modul existiert.
O.k..
Man kann nicht einfach mitten in einem Absatz oder einer Grafikoperation so abrupt aufhören.
Ich werds auf jeden Fall ausprobieren...


P.S. der Beep kommt nur wenn es wieder mit der Arbeit losgehn soll
Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

mkallas hat geschrieben:Schau mal hier: http://www.workrave.org
Das prüft, ob du schon zu lange tippst (alles einstellbar).
Hört sich cool an. Ich werds später mal ausprobieren, aber ich glaube
kaum, dass es besser ist als mein Programm 8)
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Also GNOME hat ja so ne Funktion auch bereits eingebaut. Find ich manchmal praktisch, nutze es aber „produktiv“ eher selten. Meiner Meinung nach macht es mehr Sinn sich alle Stunde nen Wecker oder so zu stellen, allein eine größere Uhr aufm Schreibtisch (gut sichtbar) erhöht in einigen Fällen spürbar die Warnehmung der Zeit und das Empfinden für Pausen.

Gerade bei der PC-Arbeit sind ja Pausen nicht zu unterschätzen – aber wie einige schon ansprachen: Wenn man mal so richtig im Thema ist, hört glaub ich keiner freiwillig auf. Und solange es einen „Überbrücken“ Button gibt sind solche Dinger eh sinnlos, mal ehrlich: Spätestens nach der dritten Pause hab ich durchgehend auf „Weiter“ geklickt :D

Gruß, Christopher.
Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

In der neuen Version gibt es noch ein bisschen mehr Pausen.
(nach je 25 min 5min Pause, nach 2h 20min Pause, nach 4h 1-2h Pause)
Der Sinn soll sein, die 20/80 - Regel* auszuhebeln.

* http://de.wikipedia.org/wiki/Pareto-Verteilung

Code: Alles auswählen

# (cc) Creative Commons Version 3.0
import Tkinter as tk
import winsound as ws
import os

class App():
    def __init__(self):
        self.root = tk.Tk()
        self.root.overrideredirect(1)
        w, h = self.root.winfo_screenwidth(), self.root.winfo_screenheight()
        self.root.geometry("%dx%d+0+0" % (w, h))
        self.root.focus_set()

        self.zaehler = 1
 
    def arbeiten(self):
        self.root.withdraw()
        if self.zaehler != 1:
#            ws.PlaySound('classified ;)',
#                         ws.SND_ALIAS)
        self.root.after(1000*60*25, self.manager)

    def manager(self):
        if 1 <= self.zaehler <= 4:
            self.pause(5)
        elif self.zaehler == 5:
            self.pause(20)
        elif 5 < self.zaehler <= 8:
            self.pause(5)
        elif self.zaehler == 9:
            os.system('shutdown -s -t 300')
            
    def pause(self, pausenzeit):
        self.root.deiconify()
        self.root.lift()
        self.zaehler += 1
        self.root.after(1000*60*pausenzeit, self.arbeiten) 

    def ready(self):
        self.root.mainloop()
        
a =App()
a.arbeiten()
a.ready()


mfg ... Janux
Qubit
User
Beiträge: 128
Registriert: Dienstag 7. Oktober 2008, 09:07

EnTeQuAk hat geschrieben: Gerade bei der PC-Arbeit sind ja Pausen nicht zu unterschätzen – aber wie einige schon ansprachen: Wenn man mal so richtig im Thema ist, hört glaub ich keiner freiwillig auf.
Ausserdem gibt es hierzu auch schon eine "Hardware-Implementierung". Nennt sich "Telefon" :?
Antworten