2016-04-22 15 views
1

Ich möchte, dass der Text automatisch in das Etikett passt. Wenn die Breite von QLabel enger wird, werden die Textformate auf mehrere Zeilen verteilt. Im Grunde bin ich auf der Suche nach einer Möglichkeit, um es so zu formatieren, wie ein HTML-Text formatiert wird, wenn wir die Größe des Webbrowser-Fensters ändern.So formatieren Sie den QLabel-Text automatisch

label=QtGui.QLabel() 

text = "Somewhere over the rainbow Way up high And the dreams that you dreamed of Once in a lullaby"  

label.setText(text) 
label.show() 
+2

Haben Sie haben label.setWordWrap (True) versucht? –

Antwort

0

Ich habe am Ende mit QLabel ‚s resizeEvent() einen Echtzeit-Label des Breitenwert zu erhalten, der verwendet wird, um den monofont Text des Labels zu formatieren auf einer Fliege:

enter image description here

text = "Somewhere over the rainbow Way up high And the dreams that you dreamed of Once in a lullaby..."  

class Label(QtGui.QLabel): 
    def __init__(self, parent=None): 
     super(Label, self).__init__(parent) 

    def resizeEvent(self, event): 
     self.formatText() 
     event.accept() 

    def formatText(self): 
     width = self.width() 
     text = self.text() 
     new = '' 
     for word in text.split(): 
      if len(new.split('\n')[-1])<width*0.1: 
       new = new + ' ' + word 
      else: 
       new = new + '\n' + ' ' + word 
     self.setText(new) 

myLabel = Label() 
myLabel.setText(text) 
myLabel.resize(300, 50) 
font = QtGui.QFont("Courier New", 10) 
font.setStyleHint(QtGui.QFont.TypeWriter) 
myLabel.setFont(font) 
myLabel.formatText() 
myLabel.show() 
+0

Was stimmt nicht mit _Frank Osterfeld_ Vorschlag? Ich bin mir ziemlich sicher, dass die wordWrap-Eigenschaft das für Sie tun wird. – ymoreau

+0

Frans Vorschläge sind großartig! Ich habe seinen Kommentar verpasst. Ich wünschte, ich würde es früher sehen! Vielen Dank! – alphanumeric