2016-12-02 6 views
0

私はpyqt 4.11を使用しています。ループを使用してラベルのセットを作成しようとしていて、各ラベルの色を変更したいとします。ただし、色はデフォルトの黒のままです。あなたは以下のようsetStyleSheetを使用する必要があなたのラベルの色を設定するにはsetStyleSheetの色をリストから項目に渡すにはどうすればいいですか?

red = (255,0,0) 
orange = (255,128,0) 
yellow = (255,255,0) 
green = (0,255,0) 
loop = 0 
NAME = ["apple","banana","strawberry","orange"] 
NAME_COLOR = [green,yellow,red,orange] 

while loop < len(NAME): 
    lbl = QtGui.QLabel(self) 
    lbl.setText(NAME[loop]) 
    lbl.move(loop*50,120) 
    lbl.setStyleSheet('QLabel { color: NAME_COLOR[loop]}') 
    lbl.show() 
    loop = loop + 1 

答えて

1

:ここ

lbl.setStyleSheet('color: rgb{}'.format("(255,128,0)")) 

PyQt4を使用してプログラムの実施例である:

from PyQt4 import QtGui 

red = (255, 0, 0) 
orange = (255, 128, 0) 
yellow = (255, 255, 0) 
green = (0, 255, 0) 

class Window(QtGui.QWidget): 

    def __init__(self, parent=None): 
     super(Window, self).__init__(parent) 

     layout = QtGui.QVBoxLayout() 

     name = ["apple", "banana", "strawberry", "orange"] 

     name_color = [green, yellow, red, orange] 
     _dict = dict(zip(name, name_color)) 
     # _dict = {'apple': (0, 255, 0), 'banana': (255, 255, 0), 
     #   'orange': (255, 128, 0), 'strawberry': (255, 0, 0)} 

     for name, color in _dict.items(): 
      label = QtGui.QLabel(self) 
      label.setText(name) 
      label.setStyleSheet('color: rgb{}'.format(str(color))) 
      layout.addWidget(label) 

     self.setLayout(layout) 


if __name__ == '__main__': 
    app = QtGui.QApplication([]) 
    w = Window() 
    w.show() 
    app.exec_() 

結果:

enter image description here

関連する問題