title: fatal python error (pygame parachute) Segmentation Fault when using Tkinter
body: <p>I made small game in <code>pygame</code> and <code>python 2.7</code> and added submit box with <strong><code>Tkinter</code></strong>.</p>
  
  <p>It worked fine till I compiled it with <code>py2exe</code> / <code>pygame2exe</code>.</p>
  
  <p><strong>Compilation</strong> was error-free.</p>
  
  <p><strong>But</strong> when i clicked on exe file to launch the application, <strong>compiled-code</strong> threw this error:</p>
  
  <pre><code>    fatal python error (pygame parachute) Segmentation Fault
      This application has terminated in unusal way for more 
      information contact application support team.
  </code></pre>
  
  <p>When I delete Tkinter code and compile it it runs fine.</p>
  
  <p>This is a part of <code>Tkinter</code> code:</p>
  
  <pre><code>    #i tried importing both with import Tkinter and from Tkinter import*
  
  
      if event.key==pygame.K_s:
          subbox=Tkinter.Tk()
          subbox_label=Tkinter.Label(subbox,text="Type your name:")
          subbox_label.pack()
          subbox_entry=Tkinter.Entry(subbox)
          subbox_entry.pack()
          def savescore(a):
              a=str(a)
              print a
              print subbox_entry.get()
              player_name=subbox_entry.get()
              player_score=a
          subbox_button=Tkinter.Button(text="Click",command=lambda:savescore(score))
          subbox_button.pack()
          subbox.mainloop()
  </code></pre>
  
  <h2>UPDATE:</h2>
  
  <p>I kicked out Tkinter code line by line and it came up that importing Tkinter causes error!</p>
  
  <p>That means that if I have just:</p>
  
  <pre><code>import Tkinter
  </code></pre>
  
  <p>my game won't work!!! <strong>What should I do?</strong></p>
  
  <p>setup file(pygame2exe but I may accidently delete something inside):</p>
  
  <pre><code>try:
      from distutils.core import setup
      import py2exe, pygame
      from modulefinder import Module
      import glob, fnmatch
      import sys, os, shutil
      import operator
  
  except ImportError, message:
      raise SystemExit,  "Unable to load module. %s" % message
  
  #hack which fixes the pygame mixer and pygame font
  origIsSystemDLL = py2exe.build_exe.isSystemDLL # save the orginal before we edit it
  def isSystemDLL(pathname):
      # checks if the freetype and ogg dll files are being included
      if os.path.basename(pathname).lower() in ("libfreetype-6.dll", "libogg-0.dll","sdl_ttf.dll"): # "sdl_ttf.dll" added by arit.
              return 0
      return origIsSystemDLL(pathname) # return the orginal function
  py2exe.build_exe.isSystemDLL = isSystemDLL # override the default function with this one
  
  class pygame2exe(py2exe.build_exe.py2exe): #This hack make sure that pygame default font is copied: no need to modify code for specifying default font
      def copy_extensions(self, extensions):
          #Get pygame default font
          pygamedir = os.path.split(pygame.base.__file__)[0]
          pygame_default_font = os.path.join(pygamedir, pygame.font.get_default_font())
  
          #Add font to list of extension to be copied
          extensions.append(Module("pygame.font", pygame_default_font))
          py2exe.build_exe.py2exe.copy_extensions(self, extensions)
  
  class BuildExe:
      def __init__(self):
          #Name of starting .py
          self.script = "game_0.3.py"
  
          #Name of program
          self.project_name = "game"
  
          #Project url
          self.project_url = "it will be  on sourceforge and indieDB"
  
          #Version of program
          self.project_version = "0.3"
  
          #License of the program
          self.license = "gnu gpl 2.0"
  
          #Auhor of program
          self.author_name = "John Doe "
          self.author_email = "i dont want spam"
          self.copyright = "John Doe 2014"
  
          #Description
          self.project_description = None
  
          #Icon file (None will use pygame default icon)
          self.icon_file = "icon.ico"
  
          #Extra files/dirs copied to game
          self.extra_datas = ["block.png","CHARACTER.png","icon.ico","COPYING.txt","README1.txt","name.txt","score.txt"]
  
          #Extra/excludes python modules
          self.extra_modules = []
          self.exclude_modules =['AppKit', 'Foundation', 'Numeric', 'OpenGL.GL', '_scproxy', '_sysconfigdata', 'copyreg', 'dummy.Process', 'numpy', 'pkg_resources', 'queue', 'winreg', 'pygame.sdlmain_osx']
  
          #DLL Excludes
          self.exclude_dll = ['']
          #python scripts (strings) to be included, seperated by a comma
          self.extra_scripts = []
  
          #Zip file name (None will bundle files in exe instead of zip file)
          self.zipfile_name =None
  
          #Dist directory
          self.dist_dir ='dist'
  
      ## Code from DistUtils tutorial at http://wiki.python.org/moin/Distutils/Tutorial
      ## Originally borrowed from wxPython's setup and config files
      def opj(self, *args):
          path = os.path.join(*args)
          return os.path.normpath(path)
  
      def find_data_files(self, srcdir, *wildcards, **kw):
          # get a list of all files under the srcdir matching wildcards,
          # returned in a format to be used for install_data
          def walk_helper(arg, dirname, files):
              if '.svn' in dirname:
                  return
              names = []
              lst, wildcards = arg
              for wc in wildcards:
                  wc_name = self.opj(dirname, wc)
                  for f in files:
                      filename = self.opj(dirname, f)
  
                      if fnmatch.fnmatch(filename, wc_name) and not os.path.isdir(filename):
                          names.append(filename)
              if names:
                  lst.append( (dirname, names ) )
  
          file_list = []
          recursive = kw.get('recursive', True)
          if recursive:
              os.path.walk(srcdir, walk_helper, (file_list, wildcards))
          else:
              walk_helper((file_list, wildcards),
                          srcdir,
                          [os.path.basename(f) for f in glob.glob(self.opj(srcdir, '*'))])
          return file_list
  
      def run(self):
          if os.path.isdir(self.dist_dir): #Erase previous destination dir
              shutil.rmtree(self.dist_dir)
  
          #Use the default pygame icon, if none given
          if self.icon_file == None:
              path = os.path.split(pygame.__file__)[0]
              self.icon_file = os.path.join(path, 'pygame.ico')
  
          #List all data files to add
          extra_datas = []
          for data in self.extra_datas:
              if os.path.isdir(data):
                  extra_datas.extend(self.find_data_files(data, '*'))
              else:
                  extra_datas.append(('.', [data]))
  
          setup(
              cmdclass = {'py2exe': pygame2exe},
              version = self.project_version,
              description = self.project_description,
              name = self.project_name,
              url = self.project_url,
              author = self.author_name,
              author_email = self.author_email,
              license = self.license,
  
              # targets to build
              console = [{
                  'script': self.script,
                  'icon_resources': [(0, self.icon_file)],
                  'copyright': self.copyright
              }],
              options = {'py2exe': {'optimize': 2, 'bundle_files': 1, 'compressed': True, \
                                    'excludes': self.exclude_modules, 'packages': self.extra_modules, \
                                    'dll_excludes': self.exclude_dll,
                                    'includes': self.extra_scripts} },
              zipfile = self.zipfile_name,
              data_files = extra_datas,
              dist_dir = self.dist_dir
              )
  
          if os.path.isdir('build'): #Clean up build dir
              shutil.rmtree('build')
  
  if __name__ == '__main__':
      if operator.lt(len(sys.argv), 2):
          sys.argv.append('py2exe')
      BuildExe().run() #Run generation
      raw_input("Press any key to continue") #Pause to let user see that things ends 
  </code></pre>
  
  <p><strong>another important thing</strong>:if i import Tkinter before pygame there is no segmentation error but game doesn't run and error window pops out and says this application requested runtime to terminate in unusal way for more information contact app support</p>