Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

tkinter Text.get() raises a TypeError exception

Tags:

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

Exception:

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'

Why does the error occur? How can I fix this?

like image 817
user3700072 Avatar asked Jul 01 '26 08:07

user3700072


1 Answers

You need to pass the Text.get() function a start and stop index indicating what part of the text in the Text widget you want.

If you want to get all the text in the Text widget, you can use

appraisal.get('1.0', END)

(Documentation for Text.get)

like image 140
Brionius Avatar answered Jul 02 '26 21:07

Brionius