金曜日, 5月 23, 2025
ホーム生成AIChatGPT【100個デスクトップアプリ作成】10個目:操作ログの出力shinkeishitsu_yaseo

【100個デスクトップアプリ作成】10個目:操作ログの出力shinkeishitsu_yaseo

🧠 概要:

概要

この記事では、PythonのTkinterを使用して作成した「操作ログ管理アプリ」の説明が行われています。このアプリは、キーボード操作とマウスクリックのログをリアルタイムで表示し、CSV形式で出力する機能を持っています。また、著者はChatGPTにプログラミングのサポートを受けて、アプリの機能を実装しています。

要約の箇条書き

  • アプリの目的: Tkinterを利用してキーボードとマウスの操作ログを記録するアプリ。
  • 基本機能:
    • キーボード操作やマウスクリックのログをリアルタイムで表示。
    • ログデータをCSV形式で保存する機能。
  • ChatGPTの利用: アプリの開発においてChatGPTに指示を出し、ソースコードを生成してもらった。
  • 動作確認: アプリを実行し、ログ出力の確認が行われた。
  • CSV出力内容: アプリ起動から終了までの操作ログがCSVファイルとして出力できる。
  • 今後の挑戦: 著者は今後さらに90個のTkinterアプリを作成する意欲を示している。
  • バグ探査の重要性: 操作ログは、バグの特定や原因解析に有効であると述べられている。

【100個デスクトップアプリ作成】10個目:操作ログの出力shinkeishitsu_yaseo

shinkeishitsu_yaseo

2025年5月23日 02:20

作り続けたら早10個目になりました。

10個のアプリはtkinter上でキー操作とマウスクリックをすると、ログが画面の右に表示され、そのログはCSVで出力できるというログ管理アプリです。

早速ChatGPTに以下の命令をしました。

tkinterでキーボードとマウスで操作したログを取れるようにしたい。tkinterの画面上でキーボードもしくはマウス操作が1回行われた場合、出力を画面右側のテキストにログインユーザーと操作を1行追加して、どんどんスクロールするようにしたい。(例:ユーザー:Y)ただしマウスはスクロールのログは取らず、クリックのログだけ取るようにしたい。テキストの履歴はCSVで取れるようにしたいので、「ログをCSVに出力」ボタンを押したらテキストの履歴をCSVで取るようにする。

ログをCSVに出力の条件があって、tkinter起動中のものだけCSVにログを出力することとする。つまり一旦tkinterを終了して再度起動した場合は、一旦終了したtkinterのログは取らないものとする。

ChatGPTへの命令

そこでできあがったソースが以下です。

import tkinter as tkfrom tkinter import ttk, filedialogimport csvimport getpassfrom datetime import datetime class InteractionLoggerApp: def __init__(self, root): self.root = root self.root.title("操作ログアプリ") self.username = getpass.getuser() self.logs = [] self.build_ui() self.bind_events() def build_ui(self): main_frame = ttk.Frame(self.root, padding=10) main_frame.pack(fill=tk.BOTH, expand=True) ttk.Label(main_frame, text="操作してください").pack(side=tk.LEFT, padx=10) self.log_text = tk.Text(main_frame, width=50, height=20, state='disabled', wrap='none') self.log_text.pack(side=tk.RIGHT, padx=10, fill=tk.Y, expand=True) scrollbar = ttk.Scrollbar(main_frame, command=self.log_text.yview) self.log_text['yscrollcommand'] = scrollbar.set scrollbar.pack(side=tk.RIGHT, fill=tk.Y) ttk.Button(self.root, text="ログをCSVに出力", command=self.export_to_csv).pack(pady=10) def bind_events(self): self.root.bind_all("<Key>", self.log_key_event) self.root.bind_all("<Button-1>", self.log_mouse_click) self.root.bind_all("<Button-2>", self.log_mouse_click) self.root.bind_all("<Button-3>", self.log_mouse_click) def log_event(self, description): timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") log_line = f"{timestamp},ユーザー:{self.username},{description}" self.logs.append(log_line) self.log_text.configure(state='normal') self.log_text.insert(tk.END, log_line + "n") self.log_text.see(tk.END) self.log_text.configure(state='disabled') def log_key_event(self, event): if event.char.strip(): desc = f"キー入力:{event.char}" else: desc = f"キー入力(特殊キー):{event.keysym}" self.log_event(desc) def log_mouse_click(self, event): button_name = {1: "左クリック", 2: "中クリック", 3: "右クリック"}.get(event.num, f"ボタン{event.num}") self.log_event(f"マウス:{button_name}") def export_to_csv(self): if not self.logs: return filepath = filedialog.asksaveasfilename( defaultextension=".csv", filetypes=[("CSVファイル", "*.csv")], title="CSVファイルに保存" ) if filepath: with open(filepath, "w", newline="", encoding="utf-8") as f: writer = csv.writer(f) writer.writerow(["日時", "ユーザー", "操作"]) for log in self.logs: parts = log.split(",", 2) if len(parts) == 3: writer.writerow(parts) if __name__ == "__main__":    root = tk.Tk()    app = InteractionLoggerApp(root)    root.mainloop()

実際動かしてみました。

操作ログアプリ

画面左の「操作してください」の部分でキーボードもしくはマウスをクリックすることで、画面右に日時とユーザー名、キー操作が表示されます。

また下の「ログをCSVに出力」ボタンを押すと、文字どおりCSVファイルに出力されます。

これはアプリ起動から終了までの操作ログになります。

CSVの中身は以下です。

操作ログのCSVファイル中身

ちゃんと操作ログがCSVとして出力されています。

よくバグの探索のために、ログ出力などをするため、基礎的なところですがChatGPTにお願いして作成してもらいました。

ここまではパッと思いついたものを作りましたが、あと90個tkinterアプリを作り続けることができるでしょうか?

ここまできたらやり抜きたいと思います。

操作動画は以下です。

今回はChatGPTを使って操作ログを出力するアプリを作りました。(tkinterアプリ10個目) よく情報システムなどでは、このような操作ログを取って、原因を特定することをするので自分もtkinterでできないかChatGPTにお願いしたところ、しっかりとしたソースコードを提供してくれました。 操作ログをCSVファイルに出力することもでき、これを標準でアプリに組み込むと、もしかしたらバグなどの原因を特定しやすくなるかもしれません。(素人目線) #100個チャレンジ#tkinter#Python#ChatGPT

神経質やせ男 (@wwphilosophy.bsky.social) 2025-05-19T22:01:48.987Z

shinkeishitsu_yaseo

平日は事務職、週末は鉄道旅と競馬(賭けはやらない)がメイン、電子書籍出版が趣味の契約社員中年サラリーマン。余暇時間が増えてきたため、こちらに日記形式で生活ログを書きます。目標は毎日更新。XではなくBlueskyを使っています。



続きをみる


Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -

インモビ転職