python中的多行文本输入框

问题描述 投票:0回答:2

在Python中,我一直在制作一个像Microsoft Word一样的文本编辑器,但我不知道如何制作一个文本输入框供用户输入。这是我的代码! (ps谢谢!)

from tkinter import *
import sys


def doNothing():
    print("Test")


root = Tk()
root.title("TextEditor")
root.geometry("300x200")
menu = Menu(root)
root.config(menu=menu)

subMenu = Menu(menu)
menu.add_cascade(label="File", menu=subMenu)
subMenu.add_command(label="New Project...", command =doNothing)
subMenu.add_command(label="Save", command=doNothing)
subMenu.add_separator()

editMenu = Menu(menu)
menu.add_cascade(label="Edit", menu=editMenu)
editMenu.add_command(label="Undo",command=doNothing)

root.mainloop()
python-3.x tkinter
2个回答
9
投票

你可以这样做:

TextArea = Text()
TextArea.pack(expand=YES, fill=BOTH)

如果你想要一个滚动条:

TextArea = Text()
ScrollBar = Scrollbar(root)
ScrollBar.config(command=TextArea.yview)
TextArea.config(yscrollcommand=ScrollBar.set)
ScrollBar.pack(side=RIGHT, fill=Y)
TextArea.pack(expand=YES, fill=BOTH)

希望这有帮助,祝你好运!


2
投票

这是一个老问题,但目前以下是可滚动多行文本输入的一个非常好的方法:

ScrolledText(mainwin, width=50, height=5).pack()

完整节目:

from tkinter import *
from tkinter.scrolledtext import ScrolledText

mainwin = Tk()
ScrolledText(mainwin, width=50, height=5).pack()
mainwin.mainloop()

以下演示应用程序进一步展示了其用法并与输入框(针对 python3)进行比较:

from tkinter import *
from tkinter.scrolledtext import ScrolledText
import sys

mainwin = Tk()
Label(mainwin, text="An Entry Box:").grid(row=0, column=0)
ent = Entry(mainwin, width=70); ent.grid(row=0, column=1)
Button(mainwin, text="Print Entry", command=(lambda: print(ent.get()))).grid(row=0, column=2, sticky="EW")

Label(mainwin, text="ScrolledText Box:").grid(row=1, column=0)
st = ScrolledText(mainwin, height=5); st.grid(row=1, column=1)
Button(mainwin, text="Print Text", command=(lambda: print(st.get(1.0, END)))).grid(row=1, column=2, sticky="EW")

Button(mainwin, text="Exit", command=sys.exit).grid(row=2, column=0, columnspan=3, sticky="EW")
mainwin.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.