質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

3471閲覧

tkinterで勤怠管理システムを作りたい

Q-aci_py3

総合スコア4

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/03/31 14:24

pythonを趣味で始めたばかりの超初心者です。python始めるまでも、パソコンはoffice系を多少使っていたくらいです。
先日、市販のゲーム開発入門書(python)を読み終えたので、自分のスキル向上のためにtkinterで勤怠管理システムを作ろうと考えていました。(システムを実際に使用はしませんし、tkinter以外を使おうとは思っていないです)そこで、「出勤」「退勤」「途中出勤」「途中退勤」の四つのボタンを設け、各社員のオブジェクト(?)にdatetimeで現在時刻を引き渡したいのですが、Buttonのcommandに入れる関数をどのように作ればいいのかがわからずに困っています。
また、ButtonクラスとLaborクラスを作ってインスタンス化をしようと考えていたのですが、私のオブジェクト指向の認識が正しいのか自信がありません。

Buttonのcommandに入れる関数、
ButtonクラスとLaborクラスの表記方法、
オブジェクト指向の解説

の3点を教えていただけると有難いです。拙い質問ではありますが、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Buttonのcommandに入れる関数、

勤怠管理は関係なく、一般的な話と受け取ります。
Pythonの関数はdef function():のように定義します。

Python

1import tkinter as tk 2def function(): 3 print("hello") # 文頭にインデントを置く必要がある。 4 5btn = tk.Button(window, text = "Hello"m command = function) # ←このcommandに代入しているfunctionは上で定義している。ボタンを押すと、print("hello")が実行できる。 6

https://watlab-blog.com/2019/05/13/tkinter-button/
ほぼこのページのソースコードをコピペしているので、見てみてください。

ButtonクラスとLaborクラスの表記方法、

Laborクラスとは何ですか?
私の知識不足かもしれませんので、教えていただきたいです。

オブジェクト指向の解説

簡単に言うと、部品(変数)や操作(関数)が入ったの入れ物(オブジェクト)を定義して、プログラミングではその入れ物の実体(インスタンス)を宣言して使うというプログラミング作法(手法)です。(あくまでイメージですが、そこまで外れてはないと思います。)
具体的な例でよく使われるのは、「車」です。部品(ハンドル、タイヤ、アクセルなどなど)と操作(進む、止まる、曲がる)があるのが車です。そういった概念的な物事の部品や操作をまとめたものをオブジェクトといっており、実際に例えば自動車の運転シミュレーションソフトを作るぞ!ってなったときに車のオブジェクトに対して、実際に登場する車を定義すると、その車はインスタンスになります。ん~、伝わるだろうか。。。(すみません

枠組みを作って、その枠組みに実際にものを入れて使っていこうねっていう感じでしょうか。
プログラミングする上ではこういったイメージをもっているだけである程度体感的に分かると思います(半端な理解で回答すると、叩かれそうな内容なのであまり深入りしたくないですが。。。)

そういった作法でプログラミングする言語をオブジェクト指向言語といいますが、Pythonはオブジェクト指向言語ではありません。

あくまで、そういう手法や概念で、こういった手法を使っていくと、プログラミングが読みやすくなったり、改良しやすくなったり、使いまわししやすくなったりするという利点があるので、よく使われています。
細かいことはややこしいので、本を読んでみてください。

まあ、オブジェクト指向をしっておかないと、動くソフトが作れないというわけではないので、趣味であれば最初は気にせず動くものを作っていけばいいのではないでしょうか。習うより慣れろといいますし。

投稿2020/03/31 14:55

Matsui_hero

総合スコア346

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Q-aci_py3

2020/03/31 15:56

ご親切にありがとうございます。 Buttonクラス、Laborクラスは一般的な用語ではなく、class Labor:でクラスを作って、__init__の引数にname(名前)やworktime(労働時間)、pay(時給)などを設けて各社員のインスタンスを作ろうとしたという意味です。出勤ボタンと退勤ボタンが押されたら、各々の押された時刻を取得して、その差を取り各社員のworktimeに代入したいのですが、勤怠管理システムのソースコードのサンプルがなかなか見つからず、ここに質問させていただいた次第です。 抽象的な質問になってしまっていることお詫び申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問