python中的多行文本输入框

时间:2014-11-02 21:39:28

标签: python-3.x tkinter

在python中,我一直在制作像Microsoft这样的文本编辑器,但我不知道如何为用户输入文本输入框。这是我的代码! (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()

2 个答案:

答案 0 :(得分:5)

你可以这样做:

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)

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

答案 1 :(得分:1)

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

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

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()