Как показать альфа-канал в PyQt5 QColorDialog
Я пробовал этот код:
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() + ";")
Но этот код не работал. Как показать альфа-канал?
1 ответ
Решение
Проблемы следующие:
В
dialog
объект класса QColorDialog был создан, но вы используете статический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(): # ...
В
name
метод QColorDialog по умолчанию вернет только rgb, если вы хотите получить argb, вы должны использовать QColor.HexArgb в качестве параметра:label.setStyleSheet( "background-color:{};".format(color.name(QColor.HexArgb)) )