tkinter Text.get() 引发 TypeError 异常

use*_*072 3 python tkinter

from tkinter import *

def save_d():
    files = open("mp3list.txt","a")
    files.write("title :\n")
    files.write("%s" % lists.get())
    files.write("appraisal :\n")
    files.write("%s\n" % appraisal.get())
    lists.delete(0,END)
    appraisal.delete("1.0",END)

def read_f(file):
    lists = []
    lists_f = open(file)
    for line in lists_f:
        lists.append(line.rstrip())
    return lists

app = Tk()
app.title(" MP3 Player " )

Label(app,text = "lists:").pack()
lists = StringVar()
lists.set(None)
options = read_f("mp3.txt")
OptionMenu(app,lists,*options).pack()

Label(app,text = "appraisal:").pack()
appraisal = Text(app)
appraisal.pack()

Button(app,text = "Save",command = save_d).pack()
app.mainloop()
Run Code Online (Sandbox Code Playgroud)

例外:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python33\lib\tkinter\__init__.py", line 1489, in __call__
    return self.func(*args)
  File "C:\Users\J\Desktop\mp3.py", line 8, in save_d
    files.write("%s\n" % appraisal.get())
TypeError: get() missing 1 required positional argument: 'index1'
Run Code Online (Sandbox Code Playgroud)

为什么会出现错误?我怎样才能解决这个问题?

Bri*_*ius 8

您需要向Text.get()函数传递一个开始和停止索引,指示Text您想要小部件中文本的哪一部分。

如果要获取Text小部件中的所有文本,可以使用

appraisal.get('1.0', END)
Run Code Online (Sandbox Code Playgroud)

(文档Text.get)