Advertisement
nealkel

python 名簿作成フォーム

Apr 15th, 2025
448
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.65 KB | Source Code | 0 0
  1. import tkinter as tk
  2. from tkinter import messagebox
  3. import ctypes
  4. import pandas as pd
  5. import os
  6.  
  7.  
  8. EXCEL_FILE = "名簿.xlsx"
  9.  
  10. user32 = ctypes.windll.user32
  11. imm32 = ctypes.windll.imm32
  12.  
  13.  
  14. def set_ime(on=True):
  15.     hwnd = user32.GetForegroundWindow()
  16.     hIMC = imm32.ImmGetContext(hwnd)
  17.     imm32.ImmSetOpenStatus(hIMC, on)
  18.     imm32.ImmReleaseContext(hwnd, hIMC)
  19.  
  20.  
  21. def on_focus(event, ime_on=True):
  22.     set_ime(ime_on)
  23.  
  24.  
  25. def save_to_excel():
  26.     sei = sei_entry.get()
  27.     mei = mei_entry.get()
  28.  
  29.     if os.path.exists(EXCEL_FILE):
  30.         df_existing = pd.read_excel(EXCEL_FILE)
  31.     else:
  32.         df_existing = pd.DataFrame(columns=["苗字", "名前"])
  33.  
  34.     new_data = pd.DataFrame([[sei, mei]], columns=["苗字", "名前"])
  35.     df_all = pd.concat([df_existing, new_data], ignore_index=True)
  36.  
  37.     df_all.to_excel(EXCEL_FILE, index=False)
  38.  
  39.     sei_entry.delete(0, tk.END)
  40.     mei_entry.delete(0, tk.END)
  41.  
  42.     messagebox.showinfo("保存完了", "データをExcelに保存しました。")
  43.  
  44.  
  45. root = tk.Tk()
  46. root.title("メンバー登録")
  47. root.geometry("360x360")
  48.  
  49.  
  50. tk.Label(root, text="苗字").grid(row=0, column=0, padx=10, pady=5)
  51. sei_entry = tk.Entry(root)
  52. sei_entry.grid(row=0, column=1, padx=10, pady=5)
  53. sei_entry.bind("<FocusIn>", lambda e: on_focus(e, True))
  54.  
  55. tk.Label(root, text="名前").grid(row=1, column=0, padx=10, pady=5)
  56. mei_entry = tk.Entry(root)
  57. mei_entry.grid(row=1, column=1, padx=10, pady=5)
  58. mei_entry.bind("<FocusIn>", lambda e: on_focus(e, True))
  59.  
  60.  
  61. save_button = tk.Button(root, text="Excelに保存", command=save_to_excel)
  62. save_button.grid(row=2, column=0, columnspan=2, pady=10)
  63.  
  64.  
  65. root.mainloop()
  66.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement