# Python + Gradio 條碼產生器 小實作 請幫我使用 Python + Gradio 製作一個「Code128 條碼產生器」。 請直接提供完整版本程式碼,不要只給片段。 ## 專案目標 使用者可以: 1. 輸入英文商品名稱 2. 輸入 Code128 條碼內容 3. 或按下按鈕自動隨機生成 4. 最後按下「生成條碼」 5. 自動輸出 PNG 條碼圖片 ## GUI 介面需求 請使用 Gradio 製作介面。介面需要包含: * 英文商品名稱輸入框 * Code128 內容輸入框 * 「隨機生成 Code128」按鈕 * 「生成條碼」按鈕 * 條碼圖片預覽區 * 狀態訊息區(例如:成功生成、輸入錯誤等) 請讓介面有基本排版,不要全部擠在一起。 ## Code128 規則 請使用: ```python barcode.get_barcode_class("code128") ``` 請注意: * Code128 可以支援英文與數字 * 本次練習請限制為「12 位數字」 * 請檢查輸入是否合法 * 若輸入錯誤,請在介面顯示錯誤訊息 不要讓程式直接崩潰。 ## 隨機生成功能 當使用者按下:「隨機生成 Code128」。系統需要: * 自動產生一組 12 位數字 * 本次程式執行期間不可重複 * 自動填入輸入框 * 請自行設計避免重複的方法。 ## 條碼圖片生成需求 當使用者按下:「生成條碼」。程式需要: * 使用 python-barcode 生成 Code128 * 使用 `ImageWriter()` 輸出 PNG * 自動預覽條碼圖片 請使用: ```python from barcode.writer import ImageWriter ``` ## 檔案儲存需求 生成的 PNG 圖片: * 請自動儲存到使用者電腦預設下載資料夾 * 不要寫死 Windows 絕對路徑 * 請使用 Python 標準方式取得 Downloads 路徑 ## 檔名規則 檔名需要包含: * 英文商品名稱 * Code128 內容 例如: ```txt COKE_471123456789.png ``` 避免檔案被覆蓋。 若檔名有非法字元,請自行處理。 --- ## 錯誤處理需求 以下情況請顯示錯誤訊息: * 商品名稱為空 * Code128 內容不是 12 位數字 * 出現非法字元 * 條碼生成失敗 請不要讓整個程式直接中斷。 --- ## 套件需求 請使用: * gradio * python-barcode * pillow