けんろう
PySimpleGUIでは、複数のGUI部品を組み合わせて、GUIアプリを簡単に作れます。今回は、出張時や在宅勤務時の勤務時間を計算できるアプリを作ってみました。
この記事では、開始時間と終了時間、除外時間を入力すれば、有効な時間を計算してくれるアプリを紹介します。私は、時間計算が苦手なので、個人的には役に立つアプリだと思っています。
この記事に載っているサンプルコードをコピーして、Pythonで実行すれば、簡単に動きを確認できますので、是非試してみて下さい。
この記事では、初心者にもわかりやすいように、各処理の内容を、サンプルコード内にコメントとして載せています。
【無料オンライン】ゼロから始めるPythonプログラミング入門講座(週5開催) テックジム時間計算アプリ
このアプリは、
「開始時間」、「終了時間」、「除外時間」を入力し、「計算」ボタンを押すと、
開始から終了までの時間を計算し、さらに除外時間を引いた時間を計算します。
この計算結果をポップアップで表示します。
サンプルコード
#!usr/bin/env python
# -*- coding: utf-8 -*-
import PySimpleGUI as sg
# レイアウト(1段目:テキスト、2段目:テキスト、テキスト入力欄、3段目:テキスト、テキスト入力欄、4段目:テキスト、テキスト入力欄、5段目:ボタン)
layout = [
[sg.Text('時間計算アプリ: 移動時間や勤務時間を計算するのに使ってください ')],
[sg.Text('開始時間', size=(15,1)), sg.InputText('09:00')],
[sg.Text('終了時間', size=(15,1)), sg.InputText('17:00')],
[sg.Text('除外時間', size=(15,1)), sg.InputText('1:00')],
[sg.Submit(button_text='計算')]]
# ウィンドウを表示する関数
def show_window():
win = sg.Window(' 時間計算 ', layout)
# イベントループ
while True:
# 入力待ち
event, values = win.read()
# イベントが何もないときの処理
if event is None:
break
# ボタンが押されたときの処理
if event == '計算':
calc_payment(values)
# 時間時給計算
def calc_payment(values):
# 入力された値を取得
start_t = timestr_to_min(values[0])
end_t = timestr_to_min(values[1])
rest_t = timestr_to_min(values[2])
# 取得した値から時間を計算
m = (end_t - start_t - rest_t)
val = int(m)
# 結果を表示
sg.popup(" 結果: " + str(val) + " 分 ")
# HH:MMの形式を分に変換 --- (*3)
def timestr_to_min(hm):
# 時と分に分ける
h, m = hm.split(":")
return int(h) * 60 + int(m)
show_window()
実行すると、
下図のようなウィンドウが立ち上がります。
「開始時間」「終了時間」「除外時間」を入れtえ、「計算」ボタンを押すと、計算結果が表示されます。
このサンプルコードを改造して、
「日付」「移動時間」「休憩時間」などを増やして、入力データや計算結果をデータベースに書き込む処理を追加すれば、勤務時間管理アプリを作ることも可能です。
まとめ
今回は、Pythonライブラリである、PySimpleGUIを使い、時間計算アプリの作り方を紹介しました。
リンク
- 【PythonでGUIアプリ入門】PySimpleGUI、Pyperclip を使った クリップボードアプリ の作り方
- 【PythonでGUIアプリ入門】PySimpleGUI を使った タイマーストップアプリ の作り方
- 【Python(PySimpleGUI)でGUIアプリ入門】Pythonアプリを起動するランチャソフトの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIによるPCカメラ映像を使った映像加工アプリの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIで、PCカメラで撮影した映像を表示するアプリの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIを使った、メディアプレイヤーアプリの作り方
コメント