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

James Stroud jstroud at mbi.ucla.edu
Thu Apr 12 23:01:37 CEST 2007


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




More information about the Python-list mailing list