How to create a multiline entry with tkinter?
Asked Answered
L

3

32

Entry widgets seem only to deal with single line text. I need a multiline entry field to type in email messages.

Anyone has any idea how to do that?

Lynettelynn answered 12/3, 2012 at 4:44 Comment(0)
F
28

You could use the Text widget:

from tkinter import *

root = Tk()
text = Text(root)
text.pack()
root.mainloop()

Or with scrolling bars using ScrolledText:

from tkinter import *
from tkinter.scrolledtext import ScrolledText

root = Tk()
ScrolledText(root).pack()
root.mainloop()
Fantan answered 12/3, 2012 at 5:27 Comment(4)
I highly recommend not importing everything from Tkinter. IMO you should use import Tkinter as tk; tk.Tk().... It makes your code more self-documenting and immune to problems caused by importing other libraries that have functions with the same name as the Tkinter widgets (for example, ttk and tk both have classes named Button)Radiance
@BryanOakley I completely agree and admit that my answer was done in haste. Thanks for the edit. I haven't updated the code so your comment will stand but am happy to do so if you think it's worthwhile.Fantan
Is there a way to use a stylable widget to achieve the same result? The Text Widget seems to not be available in ttk.Sheryl
@Zephir You can always import both, as such: from tkinter import *, from tkinter import ttk, since * doesn't include ttk by default.Zink
R
3

Just use Text() widget.

For example:

import tkinter as tk

root = tk.Tk()
text = tk.Text(root)
text.pack()
root.mainloop()

Output:

Output

Robenarobenia answered 23/1, 2021 at 5:55 Comment(0)
I
0

Check out this post. I based it on a tutorial that I found.

It might need some extra work, depending on you requirements, but it's a good start and it is based on TreeView, but allows in-place edits.

You would just need to strip out a few CustomTkinter lines if you want to work in pure Tkinter.

Ionia answered 17/7, 2023 at 12:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.