【问题标题】:New line after x pixels when adding to a label (tkinter)添加到标签时 x 像素后的新行(tkinter)
【发布时间】:2013-04-08 08:15:51
【问题描述】:

目前当我写一个标签时,它只会写一行,这有时会从标签的边缘消失,就像这样:

这是我用来写入标签的代码示例:

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”(因为最后一行是 1约 150 种可能性)。

【问题讨论】:

    标签: python tkinter label


    【解决方案1】:

    标签小部件有一个完美的选择:wraplengt

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

    来自Label's documentation on effbot.org

    确定何时应将标签的文本换成多行。这以屏幕单位给出。默认值为 0(不换行)。

    【讨论】:

    • 这确实有效,但由于标签的高度固定,当 15 行时,信息会从标签顶部弹出。这通过字符串“labelContents”中“\n”的数量来检查。正因为如此,标签换行时,程序看不到换行,而是写在标签底部,看不到。
    • @Jon 我明白了。可能是为每个条目使用一个标签小部件的解决方案吗?因此,您只需将新标签放在底部,而不是追加。
    • 我认为由于整个程序的工作方式,它会起作用,因为程序添加到标签的地方很多。此外,窗口本身是固定大小的,所以我认为我们会遇到多个标签的相同问题。不过还是谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-16
    • 2016-01-13
    相关资源
    最近更新 更多