蔵風人

If you try it, it will be somehow & Simple is Best!

[ HOME ]  [ About ]  [ Linux ]  [ CMS ]  [Python]  [ Blog ]


[ 最終更新日:2026-06-01(Mon) 17:15 ]

目次

ひと目でわかる一日(バーグラフ時計)

datetime を使ったバーグラフ時計の作成

コンソール時計に tty-clock という有名なアプリがあります。第1印象として、かっこいい!と思うと同時に、時間の表示の割に日付の表示が小さいと思いました。

何とかならないのかと思いましたが、オプションにもないようだし!

思ったことは自分で作れとばかりに、バーグラフ時計をPythonで作ってみました。

一応の完成形は、次のようなものです。

バーグラフ時計

結果的に表示文字の大きさも変えられないし、思い通りにはなっていませんが、一日の経過時間と残り時間もわかるので、これにタスク管理をやらせるのも一興かと。

コード

単純なコードしか利用していません。否、単純なコードしか利用できません。

特に説明は必要ないと思うので、そのまま公開させていただきます。

#!/usr/bin/python
import datetime
import time
import subprocess,sys
try:
    while True:
        dt = datetime.datetime.now()
        dt_day = dt.strftime('%Y/%m/%d')
        dt_time_hour = dt.strftime('%H')
        dt_time_minute = dt.strftime('%M')
        dt_week = dt.weekday()
        week_day = {0:'月',1:'火',2:'水',3:'木',4:'金',5:'土',6:'日'}
        dt_weekday = week_day[dt_week]
        remaining_minutes = 1440 - (int(dt_time_hour) * 60 + int(dt_time_minute))
        past_minutes = (int(dt_time_hour) * 60 + int(dt_time_minute))
        remaining_minutes_bar = int( remaining_minutes / 60 )
        past_minutes_bar = int( past_minutes / 60)
        subprocess.run('clear')
        print('\n')
        print('                       ',dt_day,'(' + dt_weekday + ')')
        print('                  ',' ' * remaining_minutes_bar,dt_time_hour + ' ' + dt_time_minute)
        print('過ぎ去りし:',f'{past_minutes:>4}','分',' ' * remaining_minutes_bar,'⤵️')
        print('本日の残り:',f'{remaining_minutes:>4}','分', "\033[32m" + '|' + "\033[0m",'|' * remaining_minutes_bar + "\033[35m"+'|' * past_minutes_bar +"\033[0m","\033[32m" + '|',"\033[0m")
        time.sleep(2)
        subprocess.run('clear')
        print('\n')
        print('                       ',dt_day,'(' + dt_weekday + ')')
        print('                  ',' ' * remaining_minutes_bar,dt_time_hour + ':' + dt_time_minute)
        print('過ぎ去りし:',f'{past_minutes:>4}','分',' ' * remaining_minutes_bar,'⤵️')
        print('本日の残り:',f'{remaining_minutes:>4}','分', "\033[32m" + '|' + "\033[0m",'|' * remaining_minutes_bar + "\033[35m"+'|' * past_minutes_bar +"\033[0m","\033[32m" + '|' + "\033[0m")
        time.sleep(2)


# Exit cleanly
except KeyboardInterrupt:
    sys.exit(0)