PyQt — связать фоновый цвет со строкой

Здравствуйте, я создаю сетку кнопок с помощью петель и пытаюсь применить к ним разные цвета. Мой код такой:

# Set Colors
colornumber = 24
color = ["red", "blue", "purple", "yellow", "red", "red", "red", "blue", "purple", "yellow", "red", "white", "red", "blue", "purple", "yellow", "red", "red", "red", "blue", "purple", "yellow", "red", "red"]

# Set Lists
z = []
w = []
self.button = {}

# Set Loops
for i in range(4):
    for j in range (4):
        z.append(i)
        w.append(j)

for (a, b, c) in izip_longest (z, w, color):


                # Keep Buttons Reference
                self.button[(a, b)] = QtWidgets.QPushButton() 
                self.button[(a, b)].setStyleSheet("background-color: (%s %(c))")
                
                # Add to the Layout
                self.grid.addWidget(self.button[(a, b)], a, b)

Итак, a и b печатают значения позиции, а c правильно повторяет мой список цветов.

Теперь я пытаюсь установить цвета на кнопке с помощью setStyleSheet, но не могу заставить ее работать. Как вы можете видеть в коде, я пытался вызвать их через %s, но это не работает, возможно, из-за апострофов вокруг ? Есть ли обходной путь?

Спасибо!

я не эксперт PyQt, но почему вы не используете f"background-color: {c}"?

AhmedO 09.12.2020 18:18

Эй, я пробовал так d = 'red' self.button.setStyleSheet("background-color: {d}"), но, похоже, он тоже не получает соответствующие данные..

Rainbowrama 09.12.2020 18:41
В чем разница между методом "==" и equals()
В чем разница между методом "==" и equals()
Это один из наиболее часто задаваемых вопросов новичкам на собеседовании. Давайте обсудим его на примере.
Замена символа по определенному индексу в JavaScript
Замена символа по определенному индексу в JavaScript
В JavaScript существует несколько способов заменить символ в строке по определенному индексу.
0
2
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня это работает :) %s но второй, который извлекает данные, должен быть вне апострофов..

                self.button[(a, b)].setStyleSheet("background-color: %s ;" %c) 

Другие вопросы по теме