2014-11-02 888 views
1

在python中,我一直在编写一个类似于Microsoft word的文本编辑器,但我不知道如何为用户输入文本输入框。这是我的代码! (PS谢谢!)Python中的多行文本输入框

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

可以是这样做的:

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) 

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

+0

非常感谢!我非常适合我需要的东西! – 2014-11-02 21:49:32

+0

@AndyWittig没问题!如果回答您的问题,请不要忘记将其标记为已接受。 – phantom 2014-11-02 21:50:37

+0

我如何将其标记为已接受? – 2014-11-02 21:58:37

0

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

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