2014-09-03 9 views
5

Questo dovrebbe essere davvero semplice ma non riesco a trovare una risposta per questo. Ho provato questo codice PyQt4:PyQt5: Centro allineare un'etichetta

label.setAlignment(Qt.AlignCenter) 

Ma che mi dà senza fortuna.

Grazie

+0

Gli altri flag di allineamento funzionano? Ad esempio, puoi allineare correttamente l'etichetta (usando 'Qt.AlignRight'), o allineare in basso l'etichetta (usando' Qt.AlignBottom')? –

+1

Funziona per me come un fascino. Ma io uso PySide, forse PyQt4 ha un problema anche se improbabile. – Trilarion

+0

@three_pineapples No. –

risposta

5

Credo che il problema potrebbe essere che l'etichetta è centrata, ma non riempiono lo spazio si pensa lo fa. Puoi verificare cambiando il colore dello sfondo dell'etichetta. Il seguente esempio funziona su 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_()) 
+0

"NameError: QSizePolicy non è definito." EDIT: Ecco il codice per l'intero programma: http://goo.gl/Qpte2p –

+0

Grazie, ho risolto il problema. Non posso revocarti a causa della reputazione, ma spero che altre persone lo trovino utile (comunque non ha funzionato per me: /) –

+0

Se ritieni che la mia risposta ti abbia aiutato, potresti [Accetta la mia risposta] (http://meta.stackexchange.com/a/5235/204922). – Fenikso

0

Ho una soluzione alternativa ... Traduzione HTML!

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

Ha funzionato per me. Grazie ancora!

3

Ho avuto lo stesso problema.

Provare a utilizzare Qt.Qt.AlignCenter.

+0

Grazie mille. Funziona anche per me. –

0

Il valore di AlignCenter è stato definito in PyQt5.QtCore.Qt.AlignCenter, l'altro valore di Align è stato definito anche in QtCore.Qt. QtCore.Qt Il modulo contiene anche valori di base come il valore della tastiera CTRL, MAIUSC, ALT ecc.

+0

Sei in ritardo di qualche anno, ma grazie ancora: P –