Need help with the get() method of a Text entry
James Stroud
jstroud at mbi.ucla.edu
Thu Apr 12 17:03:14 EDT 2007
James Stroud wrote:
> Chad wrote:
>
>> I have a simple little program that brings up asks the user to enter a
>> note, then is supposed to place that note into a text file when the
>> user hits the submit button. However, when the user hits the submit
>> button, absolutely nothing happens. IDLE doesn't give an error
>> message and the note is not entered into the text file. For
>> troubleshooting puposes, I wanted to see if IDLE would at least print
>> the user's input; it doesn't do that either. Can someone please help
>> me?
>>
>> Here is the code:
>>
>> from Tkinter import *
>>
>> class Application(Frame):
>> """ GUI application that creates a story based on user input. """
>> def __init__(self, master):
>> """ Initialize Frame. """
>> Frame.__init__(self, master)
>> self.grid()
>> self.create_widgets()
>>
>> def create_widgets(self):
>> """ Create widgets to get note information. """
>> # create instruction label and text entry for notes
>> Label(self,
>> text = "Notes"
>> ).grid(row = 0, column = 0, columnspan = 2 )
>>
>>
>> self.notes_ent = Text(self, width = 75, height = 10, wrap =
>> WORD)
>> self.notes_ent.grid(row = 2, column = 0 ,columnspan = 7,
>> rowspan = 3, sticky = W)
>> create submit button
>> text1 = StringVar(self)
>> text1 = self.notes_ent.get(1.0, END)
>> self.notes_ent.config(state=NORMAL)
>> Button(self,
>> text = "Add Note",
>> command = self.add_note(text1)
>> ).grid(row = 1, column = 0, sticky = W)
>>
>>
>>
>>
>> def add_note(self, text1):
>> print text1
>> text_file = open("write_it.txt", "a+")
>> text_file.write(text1)
>>
>>
>>
>>
>>
>>
>>
>>
>> root = Tk()
>> root.title("Mad Lib")
>> app = Application(root)
>> root.mainloop()
>>
>
> On second look, it seems you have deeper problems, some of which are:
>
> > text1 = StringVar(self)
> > text1 = self.notes_ent.get(1.0, END)
>
> You obviously added the second because the first will never work. Get
> rid of both lines. Even if you intended the second, it immediately
> nullifies the first. Instead of my previous suggestions, do this:
>
> 1. delete both "text1 =" lines
> 2. change "command = self.add_note(text1)" to
> "command = self.add_note"
> 3. change "def add_note(self, text1):" to
> "def add_note(self):"
> 4. delete "print text1"
> 5. change "text_file.write(text1)" to
> "text_file.notes_ent.get(1.0, END)
>
> James
>
Or rather
5. change "text_file.write(text1)" to
"text_file.write(self.notes_ent.get(1.0, END))"
More information about the Python-list
mailing list