Need help with the get() method of a Text entry
slug57_98 at yahoo.com
Thu Apr 12 23:50:12 CEST 2007
On Apr 12, 5:03 pm, James Stroud <jstr... at mbi.ucla.edu> wrote:
> 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))"
Thank you, that worked very well.
More information about the Python-list