2016-04-22 156 views
1

我希望文本自動適應標籤內部。 隨着QLabel的寬度變得更窄,文本格式佔據多行。基本上,我正在尋找一種方法來格式化它,就像在調整Web瀏覽器窗口大小時格式化HTML文本一樣。如何自動格式化QLabel文本

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

有你試過label.setWordWrap(True)? –

回答

0

我已經結束了使用QLabelresizeEvent()得到它用於標籤的monofont文本格式上飛實時標籤的寬度值:

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

_Frank Osterfeld_建議有什麼問題?我很確定wordWrap屬性會爲你做到這一點。 – ymoreau

+0

Fran的建議非常棒!我錯過了他的評論。我希望我能早日看到它!謝謝! – alphanumeric