如何在PyQt5 QColorDialog中显示Alpha通道

问题描述 投票:1回答:1

我已经尝试过此代码:

def open_color_dialog(self, label):
    dialog = QColorDialog()
    dialog.setOption(QColorDialog.ShowAlphaChannel, on=True)
    print(dialog.testOption(QColorDialog.ShowAlphaChannel)) #returning True
    color = dialog.getColor()

    if color.isValid():
        label.setStyleSheet("background-color:" + color.name() + ";")

但是此代码无效。如何显示Alpha通道?

python python-3.x pyqt pyqt5 qcolordialog
1个回答
1
投票

问题是:

  • 已经创建了QColorDialog类的dialog对象,但是您使用了静态QColorDialog::getColor()方法,该方法创建了一个新的显示的QColorDialog对象。

    def open_color_dialog(self, label):
        dialog = QColorDialog()
        dialog.setOption(QColorDialog.ShowAlphaChannel, on=True)
        if dialog.exec_() == QDialog.Accepted:
            color = dialog.selectedColor()
            if color.isValid():
                # ...
    

    def open_color_dialog(self, label):
        color = QColorDialog.getColor(options=QColorDialog.ShowAlphaChannel)
        if color.isValid():
            # ...
    
  • 默认情况下,QColorDialog的name方法将仅返回rgb,如果要获取argb,则必须使用QColor.HexArgb作为参数:

    label.setStyleSheet(
        "background-color:{};".format(color.name(QColor.HexArgb))
    )
    
© www.soinside.com 2019 - 2024. All rights reserved.