欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于PyQt6實現(xiàn)顏色選擇器小工具

 更新時間:2024年11月21日 08:22:53   作者:一晌小貪歡  
這篇文章主要為大家詳細介紹了如何基于PyQt6實現(xiàn)顏色選擇器小工具,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

程序流程

1. 界面設計

1.1 整體布局

該應用程序使用了PyQt6框架構建了一個簡單的顏色選擇器界面。整體布局采用了垂直布局(QVBoxLayout)和水平布局(QHBoxLayout)相結合的方式,實現(xiàn)了功能區(qū)與控制區(qū)的合理分布。

功能展示區(qū):位于界面的上部,通過一個標簽(QLabel)展示了所選顏色的預覽,并顯示了當前顏色的RGB值和十六進制值。

控制區(qū):位于界面的下部,包含三個旋鈕(QDial)分別用于調節(jié)紅色、綠色和藍色的強度值,以及兩個按鈕(QPushButton),分別用于復制當前顏色的RGB值和十六進制值到剪貼板。

1.2 控件設計

顏色預覽標簽:通過設置標簽的背景色來實時展示用戶選擇的顏色。

旋鈕控件:每個旋鈕的范圍被設定為0至255,對應了顏色三文素的最大值。旋鈕下方的小標簽用于顯示當前旋鈕的值。

按鈕控件:兩個按鈕分別用于觸發(fā)復制顏色值到剪貼板的操作。

2. 功能實現(xiàn)

2.1 顏色值的動態(tài)更新

當用戶旋轉任一旋鈕時,會觸發(fā)onDialValueChanged方法。此方法首先更新各旋鈕對應的數(shù)值標簽,然后根據(jù)三個旋鈕的當前值重新設置顏色預覽標簽的背景色,同時更新顏色值顯示區(qū)域的內容。

2.2 復制顏色值

應用程序提供了兩種方式復制顏色值:

復制RGB值:點擊“復制RGB顏色”按鈕時,會將當前顏色的RGB值以字符串形式復制到系統(tǒng)剪貼板。

復制十六進制值:點擊“復制16進制顏色”按鈕時,同樣將顏色值以十六進制的形式復制到剪貼板。

3. 代碼結構

3.1 類定義

MyWidget類繼承自QWidget,是整個應用的核心部分,包含了所有界面元素的初始化及事件處理邏輯。

3.2 初始化方法

在__init__構造函數(shù)中,完成了界面元素的創(chuàng)建、布局設置、信號槽連接等操作,確保了應用程序啟動后能夠正確顯示并響應用戶的交互。

3.3 事件處理

onDialValueChanged方法負責處理旋鈕值變化的事件,實現(xiàn)了顏色值的動態(tài)更新。

on_btn_clicked和on_btn_clicked2方法則分別對應了兩個按鈕的點擊事件,實現(xiàn)了顏色值的復制功能。

完整代碼

import sys
import pyperclip
from PyQt6.QtCore import Qt
from PyQt6.QtGui import QFont, QColor
from PyQt6.QtWidgets import QDialog, QPushButton, QVBoxLayout, QApplication, QWidget, QDial, QLabel, QHBoxLayout


class MyWidget(QWidget):
    def __init__(self, parent=None):
        super(MyWidget, self).__init__(parent)
        self.setWindowTitle("顏色選擇器")
        self.resize(800,400)


        ww_layout = QVBoxLayout(self)

        self.labelColor = QLabel()

        # 設置標簽的背景色
        self.labelColor.setAutoFillBackground(True)
        palette = self.labelColor.palette()
        palette.setColor(self.labelColor.backgroundRole(), QColor(255, 0, 0))  # 紅色背景
        self.labelColor.setPalette(palette,)
        self.ltk = QLabel()
        self.ltext = QLabel()
        self.ltext2 = QLabel()
        self.ltext.setText("顏色值RGB:(255, 0, 0)")
        # 添加按鈕
        self.btn = QPushButton("復制RGB顏色")
        self.btn.clicked.connect(self.on_btn_clicked)
        self.btn.setFixedSize(100, 30)

        self.btn2 = QPushButton("復制16進制顏色")
        self.btn2.clicked.connect(self.on_btn_clicked2)
        self.btn2.setFixedSize(100, 30)

        self.ltext2.setText("顏色值16進制:#FF0000")

        textVlayout = QVBoxLayout()
        textVlayout.addWidget(self.labelColor)
        textVlayout.addWidget(self.ltext)
        textVlayout.addWidget(self.ltext2)
        # self.bt 設置在 x = 200,y = 100
        textVlayout.addWidget(self.btn)
        textVlayout.addWidget(self.btn2)

        # textVlayout.addWidget(self.btn)
        textVlayout.addWidget(self.ltk)



        self.dial = QDial()
        self.dial.setRange(0,255)
        self.dial.setNotchesVisible(True)
        self.dial.valueChanged.connect(self.onDialValueChanged)

        self.lb = QLabel('0', self)
        self.lb.setAlignment(Qt.AlignmentFlag.AlignCenter)
        self.lb.setFont(QFont('Arial Black', 16))

        self.dial2 = QDial()
        self.dial2.setRange(0, 255)
        self.dial2.setNotchesVisible(True)
        self.dial2.valueChanged.connect(self.onDialValueChanged)

        self.lb2 = QLabel('0', self)
        self.lb2.setAlignment(Qt.AlignmentFlag.AlignCenter)
        self.lb2.setFont(QFont('Arial Black', 16))

        self.dial3 = QDial()
        self.dial3.setRange(0, 255)
        self.dial3.setNotchesVisible(True)
        self.dial3.valueChanged.connect(self.onDialValueChanged)

        self.lb3=QLabel('0',self)
        self.lb3.setAlignment(Qt.AlignmentFlag.AlignCenter)
        self.lb3.setFont(QFont('Arial Black',16))

        hlayout = QHBoxLayout(self)

        vlayout = QVBoxLayout(self)
        vlayout.addWidget(self.dial)
        vlayout.addWidget(self.lb)

        vlayout2 = QVBoxLayout(self)
        vlayout2.addWidget(self.dial2)
        vlayout2.addWidget(self.lb2)

        vlayout3 = QVBoxLayout(self)
        vlayout3.addWidget(self.dial3)
        vlayout3.addWidget(self.lb3)

        hlayout.addLayout(vlayout)
        hlayout.addLayout(vlayout2)
        hlayout.addLayout(vlayout3)
        # self.setLayout(hlayout)

        ww_layout.addLayout(textVlayout)
        ww_layout.addLayout(hlayout)
        self.setLayout(ww_layout)

    def onDialValueChanged(self):
        self.lb.setText(str(self.dial.value()))
        self.lb2.setText(str(self.dial2.value()))
        self.lb3.setText(str(self.dial3.value()))
        palette = self.labelColor.palette()
        palette.setColor(self.labelColor.backgroundRole(), QColor(self.dial.value(), self.dial2.value(), self.dial3.value()))  # 紅色背景
        self.labelColor.setPalette(palette)
        self.ltext.setText("顏色值RGB:(%s, %s, %s)" % (self.dial.value(), self.dial2.value(), self.dial3.value()))
        self.ltext2.setText("顏色值16進制:#%02X%02X%02X" % (self.dial.value(), self.dial2.value(), self.dial3.value()))


    def on_btn_clicked(self):
        # 將RGB顏色值復制到剪貼板
        pyperclip.copy("顏色值RGB:(%s, %s, %s)" % (self.dial.value(), self.dial2.value(), self.dial3.value()))
        self.ltk.setText("顏色值RGB—復制成功")

    def on_btn_clicked2(self):
        # 將16進制顏色值復制到剪貼板
        pyperclip.copy("顏色值16進制:#%02X%02X%02X" % (self.dial.value(), self.dial2.value(), self.dial3.value()))
        self.ltk.setText("顏色值16進制—復制成功")

if __name__=='__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.show()
    sys.exit(app.exec())

效果圖

到此這篇關于基于PyQt6實現(xiàn)顏色選擇器小工具的文章就介紹到這了,更多相關PyQt6顏色選擇器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用Python實現(xiàn)圖片批量重命名工具

    使用Python實現(xiàn)圖片批量重命名工具

    這篇文章主要為大家介紹了一個基于Python開發(fā)的圖形界面工具,用于批量重命名文件夾中的圖片文件,文中的示例代碼講解詳細,感興趣的小伙伴可以參考下
    2025-04-04
  • python打印當前文件的絕對路徑并解決打印為空的問題

    python打印當前文件的絕對路徑并解決打印為空的問題

    這篇文章主要介紹了python打印當前文件的絕對路徑并解決打印為空的問題,文中補充介紹了python中對文件路徑的獲取方法,需要的朋友可以參考下
    2023-03-03
  • PyTorch 中的傅里葉卷積實現(xiàn)示例

    PyTorch 中的傅里葉卷積實現(xiàn)示例

    這篇文章主要介紹了PyTorch 中的傅里葉卷積實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • python 創(chuàng)建一個空dataframe 然后添加行數(shù)據(jù)的實例

    python 創(chuàng)建一個空dataframe 然后添加行數(shù)據(jù)的實例

    今天小編就為大家分享一篇python 創(chuàng)建一個空dataframe 然后添加行數(shù)據(jù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python實現(xiàn)12種降維算法的示例代碼

    Python實現(xiàn)12種降維算法的示例代碼

    數(shù)據(jù)降維算法是機器學習算法中的大家族,與分類、回歸、聚類等算法不同,它的目標是將向量投影到低維空間,以達到某種目的如可視化,或是做分類。本文將利用Python實現(xiàn)12種降維算法,需要的可以參考一下
    2022-04-04
  • 使用python搭建代理IP池實現(xiàn)接口設置與整體調度

    使用python搭建代理IP池實現(xiàn)接口設置與整體調度

    在網(wǎng)絡爬蟲中,代理IP池是一個非常重要的組件,由于許多網(wǎng)站對單個IP的請求有限制,因此,我們需要一個代理IP池,在本文中,我們將使用Python來構建一個代理IP池,然后,我們將使用這個代理IP池來訪問我們需要的數(shù)據(jù),文中有相關的代碼示例供大家參考,需要的朋友可以參考下
    2023-12-12
  • python免殺技術shellcode的加載與執(zhí)行

    python免殺技術shellcode的加載與執(zhí)行

    本文主要介紹了python免殺技術shellcode的加載與執(zhí)行,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Python操作lxml庫之基礎使用篇

    Python操作lxml庫之基礎使用篇

    lxml庫是python的第三方庫,安裝方式也是十分簡單,下面這篇文章主要給大家介紹了關于Python操作lxml庫之基礎使用篇的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • python靜態(tài)方法實例

    python靜態(tài)方法實例

    這篇文章主要介紹了python靜態(tài)方法,實例分析了python靜態(tài)方法的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • 詳解Python中最難理解的點-裝飾器

    詳解Python中最難理解的點-裝飾器

    記得我好幾年前剛學Python的時候,看裝飾器就覺得看九陰真經(jīng)里面的怪文字,完全看不懂,確實裝飾器是一個非常難以理解的概念,相信很多初學者一定也有這樣的困惑,所以篇文章主要介紹了關于Python中裝飾器的相關資料,需要的朋友可以參考下。
    2017-04-04

最新評論