項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 search-input 尚未註冊或是沒有一個 view.php 檔案.

【PyQt5】Day 24 project / 偵測滑鼠目前指示顏色的小工具 (滴管工具), 利用 QCursor 偵測滑鼠, QApplication 取得截圖

看完這篇文章你會得到的成果圖

此篇文章的範例程式碼 github

https://github.com/howarder3/ironman2021_PyQt5_photoshop/tree/main/day24_color_detector_project

之前內容的重點複習 (前情提要)

我們接下來的討論,會基於讀者已經先讀過我 day5 文章 的架構下去進行程式設計
如果還不清楚我程式設計的邏輯 (UI.py、controller.py、start.py 分別在幹麻)
建議先閱讀 day5 文章後再來閱讀此文。

【PyQt5】Day 5 – 開始來設計我們的 controller.py,改以「程式角度」來說明如何建立 PyQt 的系統

設計我們的 UI

接下來我們要設計一個偵測滑鼠指示顏色的小工具
我們針對顏色設計一下欄位:

  • self.text_pos:顯示位置用
  • self.text_rgb:顯示 RGB 用
  • self.text_hex:顯示 HEX 用

轉換 day24.ui -> UI.py

pyuic5 -x day24.ui -o UI.py

執行看看 UI.py 畫面是否如同我們想像

一樣,這程式只有介面 (視覺上的呈現),沒有任何互動功能

  • 看看我們製作出來的介面
python UI.py

設計我們的 controller

這次我們的 controller 有三個主要的新功能

  • QTimer:負責更新頻率
  • QCursor:取得現在滑鼠座標位置
  • QApplication:取得現在螢幕的截圖

QTimer:負責更新頻率

為了避免我們的程式吃光我們電腦的所有資源,
我們用更新時間加以限制,不需要到幾乎無時無刻都在更新,
以「20ms (0.02 秒)」的頻率更新畫面,基本上人體就已經感覺不出差別了,
而且也比較省電腦資源。而上述的功能可以使用 QTimer 來實現。

def setup_control(self):
        self.ui.label.setText("")
        timer = QTimer(self)
        timer.timeout.connect(self.get_current_cursor_color)
        timer.start(20)

我們在 setup_control 進行這樣的設定,另外我們想把剛剛 Color 那段字消掉,
只留下顏色就好,於是我們補上一行 self.ui.label.setText(“”)