ど文系の中学校英語教員がプログラミング言語Pythonを学んでみた 10日目 自作コピペタイマー完成の巻

Sunday, 23 February 2020

プログラミングとPython

 プログラミングに手こずっている先生方、こんにちは。

 ようやくプログラミング挑戦10日間達成しました!働きながらの学習なんで、遅いペースですが、着実に学んでおります。さて、10日間の成果として、自作タイマーを作成しました。作成といっても、1からコードを書いたわけではなく、他の方がブログに載せてくださっているものをコピペさせてもらいました(http://tkitao.hatenablog.com/entry/2014/10/10/083252)。
ここまでの道のりは、多くの先輩プログラマーの助けあってのものです。ここまでこれたのはとても嬉しく思います。

  今回のタイマーでは、GUIには、Kivyを使っています。Kivyのインストールに少し苦労しましたが、無事できました。本当は、soundで、アラーム機能をつけたいのですが、いまいちわからず、その課題は次回に回します。
 
 ちなみに、コードをきれいにブログにのせるやり方を、以下の方から学びました。SyntaxHighlighterというのを使っています。(http://1studying.blogspot.com/2017/04/blogger_93.html
ブログ自体も少しずつ成長しています。感謝です。


タイトル
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from kivy.config import Config
Config.set('graphics', 'width', '300')
Config.set('graphics', 'height', '150')
 
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.properties import BooleanProperty
from kivy.properties import NumericProperty
from kivy.clock import Clock
from kivy.app import App
 
 
Builder.load_string('''
#:kivy 1.8.0
 
<kivytimer>:
    BoxLayout:
        orientation: 'vertical'
        pos: root.pos
        size: root.size
 
        Label:
            text: str(root.left_time)
            font_size: 100
 
        BoxLayout:
            orientation: 'horizontal'
            size_hint: 1.0, 0.3
 
            Button:
                text: '+10 seconds'
                font_size: 16
                on_press: root.on_command('+10 seconds')
 
            Button:
                text: 'Stop' if root.is_countdown else 'Start'
                font_size: 16
                on_press: root.on_command('start/stop')
 
            Button:
                text: 'Reset'
                font_size: 16
                on_press: root.on_command('reset')
''')
 
 
class KivyTimer(Widget):
    is_countdown = BooleanProperty(False)
    left_time = NumericProperty(0)
 
    def on_command(self, command):
        if command == '+10 seconds':
            self.left_time += 10
        elif command == 'start/stop':
            if self.is_countdown:
                self.stop_timer()
            elif self.left_time > 0:
                self.start_timer()
        elif command == 'reset':
            self.stop_timer()
            self.left_time = 0
 
    def on_countdown(self, dt):
        self.left_time -= 1
        if self.left_time == 0:
            self.is_countdown = False
            return False
 
    def start_timer(self):
        self.is_countdown = True
        Clock.schedule_interval(self.on_countdown, 1.0)
        pass
 
    def stop_timer(self):
        self.is_countdown = False
        Clock.unschedule(self.on_countdown)
        pass
 
 
class KivyTimerApp(App):
    def build(self):
        return KivyTimer()
 
 
if __name__ == '__main__':
    KivyTimerApp().run()
 




 作ってみた感想

 成果物が実際に形として現れてくるのはとても嬉しいことです。作ったといっても、他の方が作成されたものをコピペして少しカスタマイズしただけですが、それでも達成感を感じました。「Python最低限レベル」として、コードに書いていることがわかって、自分の使い方に合わせて少し手直しをすることができる程度でいいのかなと思いました。

 秒数を60秒ではなく10秒ごとにはできましたが、タイマーの音機能がまだできてないので、頑張ります。

 このタイマーをさっそく、英語授業の中の”グルグル”や、スピーチのタイマーとして使っていきたいです。