Как узнать цвет виджета?
Как сравнить цвет QLabel с rgb(45,45,45)?
from PyQt5.Qt import *
from PyQt5.QtWebEngineWidgets import *
import sys
class Window(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.label = QLabel(self)
self.label.setStyleSheet("background-color: rgb(45,45,45)")
#If цвет self.label == rgb(45,45,45):
print("1")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
Ответы (3 шт):
Автор решения: Igor junior-senior
→ Ссылка
Я не знаю PyQt но в таких случаях я ставлю метод dict и смотрю все функции методы и скорее всего она будет называться color или background
Должно получиться
self.label.color
Автор решения: Sergey Tatarincev
→ Ссылка
на вопрос как получить цвет ответ дан здесь
сравнить полученный цвет можно следующим образом
palette = self.label.palette()
color = palette.color(QPalette.Window)
if color == QColor(45,45,45):
print('equal')
else:
print('not equal')
Автор решения: S. Nick
→ Ссылка
Да, ответ @SergeyTatarincev правильный. Но чтобы продемонстрировать его на вашем примере, нужно выполнить эти действия через мгновение, т.е. дать возмлжность окну отрисоваться.
import sys
from PyQt5.Qt import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.label = QLabel('Hello World', self)
self.label.setStyleSheet("""
background-color: rgb(45, 45, 45);
color: #fff;
""")
# дайте возможность окну отрисоваться
QTimer.singleShot(0, self.get_color)
def get_color(self):
palette = self.label.palette()
color = palette.color(QPalette.Window)
if color == QColor(45, 45, 45):
print(f'{color.getRgb()} или {color.name()}')
else:
print('not equal')
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
