Нет ли способа изменить цвет фона ДИНАМИЧНО в PyQt5? - PullRequest
0 голосов
/ 01 апреля 2020

Я пишу приложение в Python, используя PyQt5. Я действительно хочу изменить фон QLable, QTextEdit или что-нибудь, что я могу показать некоторыми цветами ДИНАМИЧНО.

Я уже видел много примеров изменения цвета фона чего-то, но всем им кажется, что я Мне нужно заранее сделать какую-нибудь «палитру».

Что я хочу сделать, это изменить цвет фона на основе ввода с клавиатуры пользователя, который указывает такой цвет: # fffff или (255, 255, 255) . Так действительно ли нет способа реализовать это ??

Неважно, какой тип объекта я должен использовать. Достаточно быть прямоугольником.

1 Ответ

0 голосов
/ 01 апреля 2020

Вот базовый c пример того, как динамически изменить цвет фона с помощью setStyleSheet. Цвет фона виджета меняется на любой цвет, введенный в строку ввода. Цвета могут быть введены как именованный html цвет (красный, синий, желтый и т. Д. c.) Или как шестнадцатеричный код в виде # rrggbb.

from PyQt5 import QtWidgets


class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        layout = QtWidgets.QHBoxLayout(self)
        self.line_edit = QtWidgets.QLineEdit()
        self.line_edit.setPlaceholderText('Enter a color')
        self.line_edit.setStyleSheet('QLineEdit {background-color:white}')
        layout.addWidget(self.line_edit)

        self.line_edit.editingFinished.connect(self.change_background)

    def change_background(self):
        col = self.line_edit.text()
        self.setStyleSheet(f'QWidget {{background-color: {col};}}')
        self.line_edit.clear()


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    widget = Widget()
    widget.resize(400,300)
    widget.show()
    app.exec()
...