2013-04-08 25 views
1

目前,當我寫一個標籤,它會只寫一行,這有時會消失標籤的邊緣,就像這樣:添加到一個標籤時x像素(Tkinter的)後,新線

Label issues

這裏是我用寫在標籤上的代碼示例:

def updateLabel(self, event): 
    global string 
    global labelContents 
    global windowCommand 
    global currentEnvironment 
    if event != "no input": 
     windowCommand = self.getEntry(event) 
     labelDisplay = "> " + windowCommand 
     labelContents += labelDisplay 
     labelContents += "\n" 
     self.checkLabel() 
     string.set(labelContents) 
     self.textEntry.delete(0, END) 
     self.master.after(0, play) 
    else: 
     self.checkLabel() 
     string.set(labelContents) 

labelContents += "You have died. Game over." + "\n" 
labelContents += "You scored {0}.".format(score) + "\n" 
app.updateLabel("no input") 

我想知道有沒有什麼辦法一定量的像素之後,迫使它到一個新行(標籤寬度),而不必經過並在所有地方添加「\ n」(如最後一行是〜150個可能性中的一個)。

回答

1

標籤小部件有一個完美的選擇:wraplengt

label = Label(parent, text="This is a really long text; " * 5, wraplengt=200) 

Label's documentation on effbot.org

確定當標籤的文本應包裝成多行。這是以屏幕單位給出的。默認值是0(不包裝)。

+0

這是行得通的,但由於標籤位於固定高度,所以在15行時,信息會從標籤的頂部彈出。這由字符串「labelContents」中的「\ n」的數量進行檢查。因此,當標籤包裝文本時,程序不會看到新行,並將其寫入標籤底部,無法看到。 – Jon 2013-04-08 08:44:58

+0

@Jon我明白了。可能是爲每個條目使用一個Label小部件的解決方案?因此,不必追加,只需將新標籤放在底部即可。 – 2013-04-08 08:48:39

+0

我認爲由於整個程序的工作方式,這是可行的,因爲程序添加到標籤的地方很多。此外,窗口本身是一個固定的大小,所以我認爲我們會遇到多個標籤相同的問題。不過謝謝。 – Jon 2013-04-08 08:52:05