使用PyQt5編寫一個簡單的取色器
PyQt5搭建的一個取色器,一共寫了兩款應用,一款使用快捷鍵捕獲鼠標附近圖像的RGB和16進制顏色編碼,一款跟隨鼠標刷新圖像的RGB和16進制顏色編碼。桌面應用程序的背景色切換也可以參考此程序。
源程序的git地址: gitee.com/mtoooo/color_picker
打包的exe下載鏈接: gitee.com/mtoooo/color_picker
取色器1
源代碼參考main.py
,也可以點擊頂部exe鏈接下載取色器.exe
文件直接使用,取色快捷鍵Shift+A
,應用程序會顯示RGB和16進制顏色編碼。
源程序初始化
pip install PyQt5==5.15.10
程序啟動
python main.py
取色快捷鍵Shift+A
交互效果
main.py
import sys from PyQt5.QtCore import Qt, QTimer from PyQt5.QtGui import QColor, QPixmap, QCursor, QPainter, QPen, QBrush from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QHBoxLayout class ColorPickerApp(QWidget): def __init__(self): super().__init__() self.setWindowTitle("Color Picker") self.setGeometry(100, 100, 300, 200) # 創(chuàng)建標簽,用于顯示 RGB 和 16 進制顏色 self.rgb_hex_label = QLabel("RGB: None\nHex: None", self) # 設置標簽樣式和大小 self.rgb_hex_label.setFixedSize(150, 50) # 設置固定大小 100x50 self.rgb_hex_label.setStyleSheet("font-size: 12px; padding: 5px; border-radius: 5px; background-color: white; border: 1px solid black;") # 設置布局,使用 QHBoxLayout 和 QVBoxLayout 居中顯示標簽 layout = QVBoxLayout(self) layout.setAlignment(Qt.AlignCenter) # 設置垂直布局居中 layout.addWidget(self.rgb_hex_label) self.setLayout(layout) # 定時器用于定時獲取顏色信息 self.timer = QTimer(self) self.timer.timeout.connect(self.update_color) self.timer.start(100) # 每100毫秒更新一次 # 用來存儲背景顏色 self.bg_color = QColor(255, 255, 255) # 默認背景為白色 def update_color(self): # 獲取鼠標位置 cursor_pos = QCursor.pos() # 獲取屏幕截圖并獲取當前鼠標位置的顏色 screen = QApplication.primaryScreen() pixmap = screen.grabWindow(0) color = QColor(pixmap.toImage().pixel(cursor_pos)) # 獲取 RGB 和 16 進制顏色值 rgb = color.getRgb() hex_color = color.name() # 更新標簽顯示顏色信息 self.rgb_hex_label.setText(f"RGB: {rgb[0]}, {rgb[1]}, {rgb[2]}\nHex: {hex_color}") # 改變窗口背景色 self.bg_color = color # 刷新窗口 self.update() def paintEvent(self, event): # 繪制背景顏色 painter = QPainter(self) painter.setBrush(QBrush(self.bg_color)) painter.setPen(Qt.NoPen) painter.drawRect(self.rect()) # 填充整個窗口背景 painter.end() if __name__ == "__main__": app = QApplication(sys.argv) window = ColorPickerApp() window.show() sys.exit(app.exec_())
取色器2
源代碼參考main2.py
, 也可以下載取色器2.exe
文件直接使用,無需快捷鍵運行即可使用,應用程序會顯示RGB和16進制顏色編碼。
- 源程序初始化
pip install PyQt5==5.15.10
程序啟動
python main2.py
交互效果
main2.py
import sys from PyQt5.QtCore import Qt, QTimer from PyQt5.QtGui import QColor, QPixmap, QCursor, QPainter, QPen, QBrush from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QHBoxLayout class ColorPickerApp(QWidget): def __init__(self): super().__init__() self.setWindowTitle("Color Picker") self.setGeometry(100, 100, 300, 200) # 創(chuàng)建標簽,用于顯示 RGB 和 16 進制顏色 self.rgb_hex_label = QLabel("RGB: None\nHex: None", self) # 設置標簽樣式和大小 self.rgb_hex_label.setFixedSize(150, 50) # 設置固定大小 100x50 self.rgb_hex_label.setStyleSheet("font-size: 12px; padding: 5px; border-radius: 5px; background-color: white; border: 1px solid black;") # 設置布局,使用 QHBoxLayout 和 QVBoxLayout 居中顯示標簽 layout = QVBoxLayout(self) layout.setAlignment(Qt.AlignCenter) # 設置垂直布局居中 layout.addWidget(self.rgb_hex_label) self.setLayout(layout) # 定時器用于定時獲取顏色信息 self.timer = QTimer(self) self.timer.timeout.connect(self.update_color) self.timer.start(100) # 每100毫秒更新一次 # 用來存儲背景顏色 self.bg_color = QColor(255, 255, 255) # 默認背景為白色 def update_color(self): # 獲取鼠標位置 cursor_pos = QCursor.pos() # 獲取屏幕截圖并獲取當前鼠標位置的顏色 screen = QApplication.primaryScreen() pixmap = screen.grabWindow(0) color = QColor(pixmap.toImage().pixel(cursor_pos)) # 獲取 RGB 和 16 進制顏色值 rgb = color.getRgb() hex_color = color.name() # 更新標簽顯示顏色信息 self.rgb_hex_label.setText(f"RGB: {rgb[0]}, {rgb[1]}, {rgb[2]}\nHex: {hex_color}") # 改變窗口背景色 self.bg_color = color # 刷新窗口 self.update() def paintEvent(self, event): # 繪制背景顏色 painter = QPainter(self) painter.setBrush(QBrush(self.bg_color)) painter.setPen(Qt.NoPen) painter.drawRect(self.rect()) # 填充整個窗口背景 painter.end() if __name__ == "__main__": app = QApplication(sys.argv) window = ColorPickerApp() window.show() sys.exit(app.exec_())
到此這篇關于使用PyQt5編寫一個簡單的取色器的文章就介紹到這了,更多相關PyQt5取色器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python3中正則模塊re.compile、re.match及re.search函數(shù)用法詳解
這篇文章主要介紹了Python3中正則模塊re.compile、re.match及re.search函數(shù)用法,結(jié)合實例形式較為詳細的分析了re模塊 中re.compile、re.match及re.search函數(shù)的功能、參數(shù)、具體使用技巧與注意事項,需要的朋友可以參考下2018-06-06pytorch中的reshape()、view()、nn.flatten()和flatten()使用
這篇文章主要介紹了pytorch中的reshape()、view()、nn.flatten()和flatten()使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08python利用urllib實現(xiàn)爬取京東網(wǎng)站商品圖片的爬蟲實例
下面小編就為大家?guī)硪黄猵ython利用urllib實現(xiàn)爬取京東網(wǎng)站商品圖片的爬蟲實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08python使用PIL模塊實現(xiàn)給圖片打水印的方法
這篇文章主要介紹了python使用PIL模塊實現(xiàn)給圖片打水印的方法,涉及使用PIL模塊操作圖片的相關技巧,需要的朋友可以參考下2015-05-05Pandas缺失值填充 df.fillna()的實現(xiàn)
本文主要介紹了Pandas缺失值填充 df.fillna()的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07使用Python程序抓取新浪在國內(nèi)的所有IP的教程
這篇文章主要介紹了使用Python程序抓取新浪在國內(nèi)的所有IP的教程,作為Python網(wǎng)絡編程中獲取IP的一個小實踐,需要的朋友可以參考下2015-05-05