web-dev-qa-db-fra.com

PyQt5: centrer une étiquette

Cela devrait être très simple mais je ne trouve pas de réponse à cette question. J'ai essayé ce code PyQt4:

label.setAlignment(Qt.AlignCenter)

Mais cela ne me donne aucune chance.

Merci

9
Lachlan Shoesmith

Je pense que le problème peut être que l'étiquette est centrée, mais elle ne remplit pas l'espace que vous pensez. Vous pouvez vérifier en modifiant la couleur d'arrière-plan de l'étiquette. L'exemple suivant fonctionne pour moi sur Windows 7:

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class Window(QWidget):
    def __init__(self, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)

        self.label = QLabel("Test", self)
        self.label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.label.setAlignment(Qt.AlignCenter)
        self.label.setStyleSheet("QLabel {background-color: red;}")

        self.button = QPushButton("Test", self)

        self.layout = QGridLayout()
        self.layout.addWidget(self.label, 0, 0)
        self.layout.addWidget(self.button, 0, 1)

        self.setLayout(self.layout)
        self.show()

app = QApplication(sys.argv)
win = Window()
sys.exit(app.exec_())
10
Fenikso

J'ai eu le même problème.

Essayez d'utiliser:

Qt.Qt.AlignCenter.
3
91cobra

La valeur de AlignCenter a été définie à PyQt5.QtCore.Qt.AlignCenter, . L’autre valeur d’alignement a également été définie à QtCore.Qt. QtCore.Qt.

2
Caching

J'ai une solution de contournement avec la traduction HTML!

self.smallPWDisp.setText(_translate('Window', '<html><head/><body><p align=\'center\'>%s is your new password!</p></body></html>' % smallPassword))
0
Lachlan Shoesmith