![]() |
|
[Tkinter] Get the last entry in my text widget - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: [Tkinter] Get the last entry in my text widget (/thread-28293.html) |
Get the last entry in my text widget - Pedroski55 - Jul-13-2020 I want to get the last entry in my text widget. This writes an entry to the text widget (thanks to Menator01): def printit(text):
#text_area.delete(0.0, tk.END)
text_area.insert(tk.END, text.get() + '\n')I can't see how to assign this directly to a variable. But I can use:def retrieve_input():
#input = self.myText_Box.get("1.0",'end-1c')
answer = text_area.get(X)to get all the text.What value must X have to get the last entry, the last line, in the text widget? I need to do this a few times. RE: Get the last entry in my text widget - menator01 - Jul-13-2020 Have a look at this link. RE: Get the last entry in my text widget - menator01 - Jul-13-2020 #! /usr/bin/env python3
# Do the imports
import tkinter as tk
from functools import partial
root = tk.Tk()
root['padx'] = 20
root['pady'] = 10
def printit(text, event):
text_area['state'] = 'normal'
text_area.insert(tk.END, text.get()+ '\n')
text_area['state'] = 'disable'
entry.delete(0, tk.END)
def get_last_line():
pos = text_area.index('end-1c linestart')
pos = float(pos)-1
line = text_area.get(pos, tk.END)
label['text'] = f'Last line is: {line.strip()}'
frame = tk.Frame(root)
frame.grid(column=0, row=0, sticky='nw', padx=10)
frame2 = tk.Frame(root)
frame2.grid(column=1, row=0, sticky='nw', padx=10)
entry = tk.Entry(frame, width=40)
entry.focus()
entry.grid(column=0, row=0, sticky='n')
text_area = tk.Text(frame2, width=40, height=10)
text_area.grid(column=0, row=0, rowspan=2)
label = tk.Label(frame)
label['text'] = 'Last line is:'
label.grid(column=0, row=2, sticky='w', pady=50)
btn = tk.Button(root, text='Submit', command=partial(printit, entry, event=None))
btn.grid(column=0, row=3, sticky='w')
root.bind('<Return>', partial(printit, entry))
btn = tk.Button(root, text='Get Last Line', command=partial(get_last_line))
btn.grid(column=1, row=3)
root.mainloop()
RE: Get the last entry in my text widget - Pedroski55 - Jul-13-2020 Thank you very much! I strained my brain making this work! Getting the penultimate line was tricky. Obviously, your code is much better than mine! I don't know about float. Just out of interest, this is what I did (the extra output is so I can see what is happening, I'll block that later): def retrieve_input():
pos = text_area.index("end-1c")
lineNum = pos.split('.')
line = int(lineNum[0]) - 1
#echoMessage(str(line))
pos2 = str(line) + '.0'
answer = text_area.get(pos2, 'end-1c')
echoMessage('answer is ' + answer)
echoMessage('pos is ' + pos)
echoMessage('pos2 is ' + pos2)
echoMessage('line number echoed was ' + str(line))
return pos2;Still using the window you made, I added a button 'Submit answer'My little 'makehtmltable.py' asks me if I want to continue. It needs a 'y' to carry on. Now I can give it a y. This is the output in the text widget Quote:Enter y to continue, enter nothing to stop. Thanks again for your help! |