python_custom_tkinter_CTkTextbox_スレッド監視の部分と_CTkTexboxのbindメソッド02

 

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()


```


コメント