web-dev-qa-db-fra.com

Comment changer la taille de la police du widget QLabel enfant à partir du groupBox

Comment utiliser une police et une taille différentes pour les widgets enfants dans le GroupBox et le titre pour le GroupBox en python

def panel(self):
    groupBox = QtGui.QGroupBox("voltage Monitor")
    groupBox.setFont(QtGui.QFont('SansSerif', 13))       # the title size is good
    ..

    self.Voltage_Label = []
    ..

    vbox = QtGui.QGridLayout()
    self.Voltage_Label.append(QtGui.QLabel("voltage1 ")) # i need to have diff Font & size for these 
    self.Voltage_Label.append(QtGui.QLabel("voltage2 "))   
    self.Voltage_Label.append(QtGui.QLabel("voltage3 ")) 
    ..
    vbox.addWidget(self.Voltage_Label[i], i, 0)  
    ..
    groupBox.setLayout(vbox)
    return groupBox

J'ai fatigué ça

   self.Voltage_Label.setFont(QtGui.QFont('SansSerif', 10))

Je reçois cette erreur

    !! self.Voltage_Label.setFont(QtGui.QFont('SansSerif', 10))
AttributeError: 'list' object has no attribute 'setFont' !!

mais pour quelque chose comme thistitle1 = QtGui.QLabel("Sample Title") comme widget enfant, je peux le changer en

 title1.setFont(QtGui.QFont('SansSerif', 10))
9
user2345

Pendant que j'attendais une réponse, je voulais essayer et j'ai trouvé cette méthode/solution pour ma question:

self.Voltage_Label = []

self.Voltage_Label.append(QtGui.QLabel("voltage1 ")) # i need to have diff Font & size for these 
self.Voltage_Label.append(QtGui.QLabel("voltage2 "))   
self.Voltage_Label.append(QtGui.QLabel("voltage3 "))
.
.

for i in xrange(5):
        newfont = QtGui.QFont("Times", 8, QtGui.QFont.Bold) 
        self.Voltage_Label[i].setFont(newfont)
8
user2345

Vous essayez d'appeler la méthode setFont() d'un objet de la classe list (qui n'a pas cette méthode), pas de la QtGui.QLabel objet.

Vous pouvez utiliser une compréhension de liste pour une meilleure évolutivité et performances:

voltages = ["voltage1 ", "voltage2 ", "voltage3 "]

# Populates the list with QLabel objects
self.Voltage_Label = [QtGui.QLabel(x) for x in voltages]

# Invokes setFont() for each object
[x.setFont(QtGui.QFont("Times", 8, QtGui.QFont.Bold)) for x in self.Voltage_Label]

Si vous avez besoin de plus d'étiquettes de tension, il vous suffit de modifier la liste voltages.

Et puis même:

[vbox.addWidget(self.Voltage_Label[i], i, 0) for i in range(len(self.Voltage_Label))]
4
Nuno André