@Limons

QtDesinger + Pyqt + pushbutton, как изменить цвет по нажатию?

Есть кнопка, чей Id = button, в QtDesinger она уже имеет свой css.
Я хочу, чтобы при нажатие менялся цвет допустим на чёрный(0, 0, 0), но реализовать это в коде.

def function():
        form.fishing_0.setStyleSheet('background: rgb(255,0,0);')

form.fishing_0.clicked.connect(function)

Но так он забывает весь стайл кнопки и всё что от кнопки остаётся это текст и bg, теряя тени, обводку и т.п. Что делать?
  • Вопрос задан
  • 764 просмотра
Решения вопроса 1
WolfInChains
@WolfInChains
Либо передавать весь стиль с измененным цветом (а не только бекграунд), либо передавать цвета в качестве агрументов при вызове окна
# стилизуем через f строки, передавая цвета как аргументы
self.pushButton.setStyleSheet("QPushButton{\n"
                                          "    border-radius: 30px;\n"
                                          f"    border: 2px solid {color_1};\n"
                                          f"    background-color:  {color_2};\n"
                                          "}")

# добавляем аргументы в setupUi
def setupUi(self, MainWindow, color_1, color_2):

# если форма как отдельный модуль
import your_form
self.form = your_form.class_name()

# если в одном файле
self.form = class_name()

# вызываем форму с новыми цветами
def function(self):
    self.form.setupUi(self, "rgb(255,0,0)", "rgb(255,0,0)")
    self.show()

self.form.fishing_0.clicked.connect(function)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы