title: Tkinter Splits Menu and Main Window Upon Attempted Close
body: <p>I am using Tkinter to build a basic text editor. I have a small File menu with four buttons: Open, Save, New File, and Exit. The main part of the window is devoted to the editor and some buttons pop up occasionally (saving, opening, etc.)
  However, I have a couple of problems:
  1) When I attempt to close the main window with the exit button on the window border, it splits itself into the main window in one window and the menu in a smaller window. Everything remains fully functional, but I have to close two windows to terminate the program. <em>When I use the exit button in the menu this does not happen.</em>
  2) My second problem is unrelated to the question title, but my code is here so: I have four items coded into the menu section, but only three are showing up. The fourth only appears when the above phenomenon occurs. Why is it doing that? and how can I fix it?</p>
  
  <p>Thanks very much! My description of the phenomena probably will be insufficient, so here is a link to a picture of what I am describing:
  <a href="https://goo.gl/vjwI5X" rel="nofollow">https://goo.gl/vjwI5X</a>
  You can see in the top right hand corner the window is black (this is the main text editor) but no menu--right next to it is the menu, in the smaller window, along with all buttons that happen to be open at the time. </p>
  
  <p>Here is the my code: </p>
  
  <pre><code>from Tkinter import *
  import sys
  import menu_config
  import tkMessageBox
  import error_mes
  
  #Variables that are globally needed
  file_input = "" #whats put into the text box
  _FILE_= "" #File the user wants to open; readapt to be synonymous with save?
  open_a_file = "" #will be the entry field for opening a file
  target = ""
  new_file_ = ""
  new_file_name = ""
  def get_from_text():
      global file_input
      try:
          file_input = my_text_box.get("1.0", END)
          print file_input
      except:
          file_input = 'UHOH'
          print file_input
  
  def save():
      global file_input, FILE_, target, _FILE_
      file_input = my_text_box.get("1.0", END)
      target = open(_FILE_, "r+w")
      target.truncate()
      target.write(file_input)
  
  def exit_application():
      sys.exit(0)
  
  def menu_open_file():
      global _FILE_, open_a_file, save
      try:
          open_a_file = Entry()
          open_a_file.grid(row = 3, column = 0)
          open_a_file.insert(0, "Path to File to Open")
          save.grid_forget()
          Button(main, text = "Click to Open", command = get_file).grid(row = 4, 
                                                                      column = 0)
      except:
          #tkMessageBox.showinfo("Error Code 52", "Something went wrong.")
          error_mes.error()
  
  def get_file():
      global _FILE_, open_a_file
      _FILE_ = open_a_file.get()
      target = open(_FILE_, "r+w")
      opened_file = target.read()
      try:
          my_text_box.insert(INSERT, opened_file)
      except:
          tkMessageBox.showinfo("This is wrong", "Something went wrong!")
  
  def new_file():
      global new_file_
      my_text_box.delete(1.0, END)
      try:
          new_file_ = Entry()
          new_file_.grid(row = 3, column = 0)
          new_file_.insert(0, "Path to new file + name")
          Button(main, text = "Click to Save", command = save_new_file).grid(row = 4, 
                                                                      column = 0)
      except:
          tkMessageBox.showinfo("Error Code 52", "Something went wrong.")
  
  def save_new_file():
      global new_file_, new_file_name
      new_file_name = new_file_.get()
  
  
  
  my_text_box = Text(bg = "black", fg = "white", insertbackground = "white")
  my_text_box.grid(row = 0, column = 0)
  
  
  
  def main():
      main = Tk()
      #The Menu
  
      first_menu = Menu(main)
      main.config(menu = first_menu)
      fileMenu = Menu(first_menu)
      fileMenu.add_command(label = "Open", command = menu_open_file)
      fileMenu.add_command(label = "New File...", command = new_file)
      fileMenu.add_command(label = "Save", command = save)
      fileMenu.add_command(label = "Exit", command = exit_application)
      first_menu.add_cascade(label = "File", menu = fileMenu)
  
      savebutton = Button(main, text = "Save", command = save)
      savebutton.grid(row = 3, column = 0)
      main.mainloop()
  
  if __name__ == '__main__':
      main()
  </code></pre>
  
  <p>The module <code>error_mes</code> is one I created...sorry for any confusion. It has no effect on the program. But this is the code if it helps:</p>
  
  <pre><code>import tkMessageBox
  
  def error():
      tkMessageBox.showinfo("Error 52", "Something went wrong.")
  </code></pre>