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))
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)
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))]