【问题标题】:Show updated text in Tkinter Label在 Tkinter 标签中显示更新的文本
【发布时间】:2013-03-28 19:51:30
【问题描述】:

我制作了一个程序,它显示一个窗口,并将用户输入打印到Label,并将将来的任何输入添加到Label 的新行。

我的问题是一旦达到x 的行数,文本就会超出Label 的范围,你就看不到它了。

我想做的是将新输入放置在所有输入的底部,导致顶行向上推并超出标签顶部。

这是目前为止的全部代码:

from tkinter import *

string = None
labelContents = ""

class App(Frame):
    def __init__(self, master):
        Frame.__init__(self, master)
        self.master = master
        self.initUI()

    def initUI(self):
        global string
        self.master.title("Tkinter test")

        string = StringVar()

        frame = Frame(self, relief=RIDGE, borderwidth=3, width=300, height=50)
        frame.pack(fill=BOTH, expand=1)

        label = Label(self, justify=LEFT, relief=RIDGE, borderwidth=3, textvariable=string, width=300, height=5, anchor=NW)
        label.pack(fill=BOTH, expand=1)

        self.pack(fill=BOTH, expand=1)

        self.textEntry = Entry(self)
        self.textEntry.bind('<Return>', self.updateLabel)
        self.textEntry.pack(side=TOP, fill=X, padx=5, pady=5)

        closeButton = Button(self, text="Close", height=1, width=10, command=self.close)
        closeButton.pack(side=RIGHT, padx=5, pady=5)

    def close(self):
        self.master.destroy()

    def updateLabel(self, event):
        global string
        global labelContents
        labelContents += self.textEntry.get()
        labelContents += "\n"
        string.set(labelContents)
        self.textEntry.delete(0, END)

def main():
    root = Tk()
    root.geometry("400x500+440+262")
    root.resizable(0, 0)
    app = App(root)
    root.mainloop()

if __name__ == "__main__":
    main()

【问题讨论】:

    标签: python tkinter label


    【解决方案1】:

    听起来您想使用文本小部件或列表框而不是标签,因为小部件具有将内容从顶部滚动的能力。否则,您必须自己管理标签中的数据。

    对于后者,在您的 updateLabel 函数中,您可以首先获取标签的现有内容,然后在换行符处拆分以提供列表。接下来,如果列表长于 5,则追加新项目并弹出项目。然后,用换行符加入列表并将其放回标签中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多