diff --git a/chap/Python.tex b/chap/Python.tex new file mode 100644 index 0000000..c1e4ee0 --- /dev/null +++ b/chap/Python.tex @@ -0,0 +1,30 @@ +\chapter{Python} \label{chap:Python} \index{Python} + + + +\section{Pourquoi je n'aime pas Python} + +Depuis des lustres, autour de moi, je vois de plus en plus de +gens faire du code en Python, +certains même font de choses très avancées. +Et beaucoup de ces gens essayent de me convaincre que c'est +un langage vraiment trop bien, trop moderne, trop dans la +\textit{vibe} du devops, battery included, toussa. +Quelques uns d'entre eux vont même jusqu'à me parler d'un +certain \textbf{canard} qui faciliterait bien la vie +des preogrammeurs. + +Je ne suis pas convaincu. + + + +\section{Mais quand même...} + +\begin{figure}[h] + \begin{center} + \includegraphics[scale=0.75]{chap/chronometre} + \caption{Chronometre} + \end{center} +\end{figure} + + diff --git a/chap/chronometre.png b/chap/chronometre.png new file mode 100644 index 0000000..8465147 Binary files /dev/null and b/chap/chronometre.png differ diff --git a/code/chronometre.py b/code/chronometre.py new file mode 100755 index 0000000..b166b50 --- /dev/null +++ b/code/chronometre.py @@ -0,0 +1,79 @@ +#!/usr/bin/python + +from Tkinter import * +import time, math + +class StopWatch(Frame): + """ Implement a stopwatch frame widget """ + msec = 420 + def __init__(self, parent=None, **kw): + Frame.__init__(self, parent, kw) + self._start = 0.0 + self._elapsed = 0.0 + self._running = False + self.timestr = StringVar() + self.makeWidgets() + + def makeWidgets(self): + l = Label(self, textvariable=self.timestr, + font = "Helvetica 36 bold", + bg = "Grey20", fg = "Yellow", + padx = 30, pady = 30) + self._setTime(self._elapsed) + l.pack(fill=X, expand=YES, pady=0, padx=0) + + def _update(self): + self._elapsed = time.time() - self._start + self._setTime(self._elapsed) + self._timer = self.after(self.msec, self._update) + + def _setTime(self, elap): + minutes = int(elap/60) + seconds = int(elap - (minutes*60.0)) + fl = math.floor(elap) + hseconds = int((elap - fl)*100) + self.timestr.set('%03dm%02d.%02d' % \ + (minutes, seconds, hseconds)) + def Start(self): + if not self._running: + self._start = time.time() - self._elapsed + self._update() + self._running = True + def Stop(self): + if self._running: + self.after_cancel(self._timer) + self._elapsed = time.time() - self._start + self._setTime(self._elapsed) + self._running = False + def Reset(self): + """ reset the stopwath to 000m00.00 """ + self._start = time.time() + self._elapsed = 0.0 + self._setTime(self._elapsed) + def Dump(self): + """ Display internals variables """ + print "start = ", self._start + print "elapsed = ", self._elapsed + print "refresh = ", self.msec + print "running = ", self._running + # print "timestr = ", self.timestr + def About(self): + print "A kludge by tTh" + +# -------------------------------------------------------------------- + +if __name__ == '__main__': + def main(): + root = Tk() + root.title("Chronometre") + sw = StopWatch(root) + sw.pack(side=TOP) + Button(root, text='Start', command=sw.Start).pack(side=LEFT) + Button(root, text='Stop', command=sw.Stop).pack(side=LEFT) + Button(root, text='Reset', command=sw.Reset).pack(side=LEFT) + Button(root, text='Dump', command=sw.Dump).pack(side=LEFT) + Button(root, text='Quit', command=root.quit).pack(side=LEFT) + root.mainloop() + + main() +