J'ai créé un programme qui affiche une fenêtre et imprime l'entrée de l'utilisateur dans un Label
, et ajoutera toute entrée future au Label
sur une nouvelle ligne.Afficher le texte mis à jour dans l'étiquette Tkinter
Mon problème est une fois qu'il obtient x
nombre de lignes, le texte sort de la plage de Label
, et vous ne pouvez pas le voir.
Ce que je voudrais faire est d'avoir la nouvelle entrée placée au bas de toutes les entrées, provoquant vers le haut poussé vers le haut et hors de la partie supérieure de l'étiquette.
est ici tout le code jusqu'à présent:
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()