使用 TDX API 得到 火車時刻表 設定起訖站 於到站前提醒
適合火車通勤工作者 下班使用
程式下載[含 原始碼] 注意需自行申請 TDX API 帳密 填入 [免費]
預覽畫面
設定畫面
TDX_Simple004.py — 程式文件
一、程式簡介
台鐵簡易時刻懸浮視窗,以半透明置頂小視窗即時顯示指定起訖站之間未來最近 N 班列車(預設 3 班),包含車種、車次、出發/抵達時間及即時誤點分鐘數。首次執行時透過對話框設定起訖站與偏好,設定值存入 tdx_simple.ini,往後啟動直接讀取,無需重複輸入。
二、概念
三、執行邏輯
車次篩選關鍵條件(_next_local_trains):
- 車種符合使用者設定(區間 / 對號)
- _runs_today() 解析備考欄位(「逢週X行駛/停駛」)確認今日實際行駛
- 起站 StopSequence < 訖站 StopSequence(方向正確)
- 起站發車時間 ≥ 當前時間
四、應用
- 通勤族 — 開機常駐,不需開啟瀏覽器即可確認下一班區間車或自強號
- 多站路線 — 支援全台主要幹線約 50 個站點,可任意設定起訖站
- 車程追蹤 — 顯示抵達時間與即時誤點,方便規劃接駁
- 可打包為 .exe — 配合 PyInstaller spec,可部署給無 Python 環境的使用者
五、資料來源
六、技術分析
架構
採用單一模組 + 類別封裝結構,無框架依賴:
- 全域函式負責 API 存取、快取讀寫、設定檔管理(純工具層)
- _SetupDialog(tk.Toplevel) — 設定對話框,獨立生命週期
- SimpleApp(tk.Tk) — 主視窗,持有所有狀態與排程
GUI 技術
資料流與執行緒安全
- 所有 I/O(API、檔案讀寫)都在 daemon=True 的背景執行緒中執行
- 結果透過 self.after(0, callback, ...) 排回 Tk 主執行緒更新 UI,符合 tkinter 單執行緒模型要求
- 班表刷新(60 秒)與誤點刷新(可設 1–10 分鐘)使用獨立 after 排程互不干擾
快取策略
設定持久化
使用 Python 標準函式庫 configparser(INI 格式),section [TDX_Simple] 儲存:起訖站代碼與名稱、視窗座標、透明度、顯示筆數、車種過濾、提醒分鐘數、誤點刷新間隔,共 10 個欄位,讀寫均有容錯處理。
備考解析(_runs_today)
以正規表示式解析如「逢週一至五行駛」、「逢週六、日停駛」等備考字串,判斷列車今日是否實際運行,避免顯示停駛班次。

