Need help with the get() method of a Text entry

James Stroud jstroud at mbi.ucla.edu
Thu Apr 12 23:03:14 CEST 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