コンピュータプログラミングのプロセスにおいて、GUI(グラフィカルユーザーインターフェース)は不可欠な部分です。Python には複数の GUI ライブラリから選択できます。その中で、Tkinter は Python に付属する標準 GUI ライブラリであり、強力で使いやすいです。そこで、このブログではTkinterを使って開発した簡単な生徒点呼プログラムを紹介します。
- プログラムの主な機能
プログラムの主な機能は、Excel ファイルから学生リストを読み取り、点呼対象の学生をランダムに選択し、点呼回数と学生の最新点呼時刻をカウントして更新することです。同時に、関数を使用して新しい生徒を追加することもできます。新しい生徒を Excel ファイルに追加します。
- プログラムの実施手順
まず、プログラムは Excel ファイルが存在するかどうか、およびヘッダーが正しいかどうかをチェックします。ファイルまたはヘッダーが存在しない場合は、新しいファイルとヘッダーが作成されます。このステップは、プログラムが正常に動作することを保証するために非常に重要です。
次にウィンドウを作成し、3 つの部分に分割します。上部のラベルには「[点呼開始] ボタンをクリックしてください」と表示され、中央のボタンは点呼操作を実行するために使用され、下部はテキスト ボックスと新しい生徒を追加するための [生徒の追加] ボタンです。点呼操作を実行すると、プログラムは学生をランダムに選択し、インターフェースに表示します。同時に、生徒の点呼回数と最終点呼時刻も Excel ファイルに更新されます。このステップは、Excel ファイルをすばやく読み取って処理できる pandas モジュールを通じて実行されます。
さらに、プログラムには新しい生徒を追加する機能も提供されます。ユーザーは、名前を入力して「生徒を追加」ボタンをクリックすることで、新しい生徒を Excel ファイルに追加できます。このステップは、新しいデータ行を簡単に追加できる pandas モジュールを通じても実装されます。
- プログラムコード解析
プログラムコードは非常にシンプルで、コメントも詳しく書かれており、初心者にとって非常に親切です。プログラムの主な機能とコード実装を段階的に分析してみましょう。
まず、プログラムは Excel ファイルを読み取り、以下をチェックします。
import pandas as pd
import random
import tkinter as tk
import datetime
import os
STUDENT_FILE = '学生名单.xlsx'
# 检查文件和表头是否存在,如果不存在则创建新的文件和表头
if not os.path.exists(STUDENT_FILE) or not {'姓名', '点名次数', '最近点名时间'}.issubset(set(pd.read_excel(STUDENT_FILE).columns)):
df = pd.DataFrame(columns=['姓名', '点名次数', '最近点名时间'])
df.to_excel(STUDENT_FILE, index=False)
else:
# 读取Excel文件
df = pd.read_excel(STUDENT_FILE)
次に、プログラムは Tkinter ウィンドウと複数のラベル、ボタン、テキスト ボックスを作成します。
# 创建主窗口
root = tk.Tk()
root.title('学生点名程序')
# 创建标签1并放在主窗口中上方
label1 = tk.Label(root, text='请点击“开始点名”按钮', font=('Arial', 24))
label1.pack(expand=True)
# 创建标签2并放在主窗口中下方
label2 = tk.Label(root, text='', font=('Arial', 18))
label2.pack(pady=20)
# 点名函数
def roll_call():
name = random.choice(df['姓名'])
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
df.loc[df['姓名'] == name, ['点名次数', '最近点名时间']] += 1, now
update_label(name)
# 创建按钮1并放置在标签下方
button1 = tk.Button(root, text='开始点名', command=roll_call, font=('Arial', 18))
button1.pack(pady=20)
def add_student():
name = entry.get().strip()
if name:
# 增加默认值
df.loc[df.shape[0]] = [name, 0, '']
df.to_excel(STUDENT_FILE, index=False)
entry.delete(0, tk.END)
このプログラムは、ラベルを更新する機能も提供します。これは、呼び出された生徒、点呼の回数、および生徒の最新の点呼時刻をインターフェイスに表示するために使用されます。
def update_label(name):
count, time = df.loc[df['姓名'] == name, ['点名次数', '最近点名时间']].values[0]
label1.config(text='被点名的学生是:{}'.format(name))
label2.config(text='{} 已被点名 {} 次,最近一次是在 {}'.format(name, count, time))
最後に、新しい学生を追加する機能があります。名前を入力して [学生を追加] ボタンをクリックすると、Excel ファイルに追加できます。
# 添加新学生函数
def add_student():
name = entry.get().strip()
if name:
# 增加默认值
df.loc[df.shape[0]] = [name, 0, '']
df.to_excel(STUDENT_FILE, index=False)
entry.delete(0, tk.END)
以上がこのブログで紹介した生徒点呼の手順です。このプログラムを通じて、初心者は Python GUI プログラミングの基礎と pandas モジュールの使用方法を学ぶことができます。
読んだらフォローをクリックしてください!
あなたのシャオシャオアクリジン!!!