import customtkinter as ctk
import tkinter as tk
class BarcodeScannerApp(ctk.CTk):
def __init__(self):
super().__init__()
self.title("Barcode Scanner")
self.geometry("500x400")
# 商品データ (キー: バーコード, 値: {名前, 価格, 数量})
self.items = {}
# 状態管理
self.state = "INIT"
# StringVar でリアルタイム検知
self.barcode_var = tk.StringVar()
self.barcode_var.trace("w", self.on_text_change)
# バーコード入力
self.entry_barcode
= ctk.CTkEntry(self,
textvariable=self.barcode_var,
placeholder_text="Enter barcode")
self.entry_barcode.pack(pady=10)
# Enterキーが押されたら確定処理
self.entry_barcode.bind("<Return>", self.process_barcode)
def on_text_change(self, *args):
"""
入力途中の処理(リアルタイムで入力監視)
"""
barcode = self.barcode_var.get()
print(f"入力中のバーコード: {barcode}")
# 例えば、一定桁数(12桁など)で自動確定するなら
if len(barcode) >= 12:
self.process_barcode(None)
def process_barcode(self, event):
"""
確定したバーコードの処理
"""
barcode = self.entry_barcode.get().strip()
if not barcode:
return
if barcode in self.items:
self.items[barcode]["quantity"] += 1
else:
self.items[barcode]
= {"name": f"Item {barcode}",
"price": 100, "quantity": 1}
print(f"処理済みバーコード: {barcode}")
self.update_list()
# 入力欄をクリア
self.barcode_var.set("")
def update_list(self):
"""ダミーの更新処理"""
print("商品リスト更新:", self.items)
# 実行
app = BarcodeScannerApp()
app.mainloop()
```
コメント
コメントを投稿