text: Title: [Bug]: Possible defect in backend selection with Python 3.13 on Windows
  Body: ### Bug summary
  
  I've ran into this while upgrading some CI to Python 3.13
  Apparently a test as simple as `plt.subplots()` will crash specifically on Python 3.13 + Windows
  I created a minimal reprod repo, where I run the same test successfully with the following combos:
  - Python 3.13 + Ubuntu
  - Python 3.12 + Windows
  
  see https://github.com/neutrinoceros/reprod-mpl-win-python-3.13-bug/actions/runs/11257049452
  
  From my non-expert perspective, there are multiple suspects:
  - Python 3.13 itself (note that in my reprod I'm using a uv-managed binary from https://github.com/indygreg/python-build-standalone, but I also obtain the same failure with a binary from Github Actions)
  - matplotlib
  - my own test configuration: I'm not explicitly configuring a matplotlib backend, but never needed to until now, so I'm not sure this would be a solution or a workaround. However, I have verified that doing so *works*. Please feel free to close this issue if this is the recommended solution.
  
  ### Code for reproduction
  
  ```Python
  import matplotlib.pyplot as plt
  
  def test_subplots_simple():
      fig, ax = plt.subplots()
  ```
  
  
  ### Actual outcome
  
  ```
  ============================= test session starts =============================
  platform win32 -- Python 3.13.0, pytest-8.3.3, pluggy-1.5.0
  rootdir: D:\a\reprod-mpl-win-python-3.13-bug\reprod-mpl-win-python-3.13-bug
  configfile: pyproject.toml
  collected 1 item
  
  tests\test_1.py F                                                        [100%]
  
  ================================== FAILURES ===================================
  ____________________________ test_subplots_simple _____________________________
  
      def test_subplots_simple():
  >       fig, ax = plt.subplots()
  
  tests\test_1.py:4: 
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  .venv\Lib\site-packages\matplotlib\pyplot.py:1759: in subplots
      fig = figure(**fig_kw)
  .venv\Lib\site-packages\matplotlib\pyplot.py:1027: in figure
      manager = new_figure_manager(
  .venv\Lib\site-packages\matplotlib\pyplot.py:550: in new_figure_manager
      return _get_backend_mod().new_figure_manager(*args, **kwargs)
  .venv\Lib\site-packages\matplotlib\backend_bases.py:3507: in new_figure_manager
      return cls.new_figure_manager_given_figure(num, fig)
  .venv\Lib\site-packages\matplotlib\backend_bases.py:3512: in new_figure_manager_given_figure
      return cls.FigureCanvas.new_manager(figure, num)
  .venv\Lib\site-packages\matplotlib\backend_bases.py:1797: in new_manager
      return cls.manager_class.create_with_canvas(cls, figure, num)
  .venv\Lib\site-packages\matplotlib\backends\_backend_tk.py:483: in create_with_canvas
      window = tk.Tk(className="matplotlib")
  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
  
  self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
  className = 'matplotlib', useTk = True, sync = False, use = None
  
      def __init__(self, screenName=None, baseName=None, className='Tk',
                   useTk=True, sync=False, use=None):
          """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
          be created. BASENAME will be used for the identification of the profile file (see
          readprofile).
          It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
          is the name of the widget class."""
          self.master = None
          self.children = {}
          self._tkloaded = False
          # to avoid recursions in the getattr code in case of failure, we
          # ensure that self.tk is always _something_.
          self.tk = None
          if baseName is None:
              import os
              baseName = os.path.basename(sys.argv[0])
              baseName, ext = os.path.splitext(baseName)
              if ext not in ('.py', '.pyc'):
                  baseName = baseName + ext
          interactive = False
  >       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
  E       _tkinter.TclError: Can't find a usable init.tcl in the following directories: 
  E           C:/Users/runneradmin/AppData/Roaming/uv/python/cpython-3.13.0-windows-x86_64-none/lib/tcl8.6 C:/Users/runneradmin/AppData/Roaming/uv/python/lib/tcl8.6 C:/Users/runneradmin/AppData/Roaming/uv/lib/tcl8.6 C:/Users/runneradmin/AppData/Roaming/uv/python/library C:/Users/runneradmin/AppData/Roaming/uv/library C:/Users/runneradmin/AppData/Roaming/uv/tcl8.6.12/library C:/Users/runneradmin/AppData/Roaming/tcl8.6.12/library
  E       
  E       
  E       
  E       This probably means that Tcl wasn't installed properly.
  
  C:\Users\runneradmin\AppData\Roaming\uv\python\cpython-3.13.0-windows-x86_64-none\Lib\tkinter\__init__.py:2459: TclError
  =========================== short test summary info ===========================
  FAILED tests/test_1.py::test_subplots_simple - _tkinter.TclError: Can't find a usable init.tcl in the following directories: 
      C:/Users/runneradmin/AppData/Roaming/uv/python/cpython-3.13.0-windows-x86_64-none/lib/tcl8.6 C:/Users/runneradmin/AppData/Roaming/uv/python/lib/tcl8.6 C:/Users/runneradmin/AppData/Roaming/uv/lib/tcl8.6 C:/Users/runneradmin/AppData/Roaming/uv/python/library C:/Users/runneradmin/AppData/Roaming/uv/library C:/Users/runneradmin/AppData/Roaming/uv/tcl8.6.12/library C:/Users/runneradmin/AppData/Roaming/tcl8.6.12/library
  
  
  
  This probably means that Tcl wasn't installed properly.
  ============================= 1 failed in 12.18s ==============================
  ```
  
  ### Expected outcome
  
  no failure
  
  ### Additional information
  
  _No response_
  
  ### Operating system
  
  Windows
  
  ### Matplotlib Version
  
  3.9.2
  
  ### Matplotlib Backend
  
  ?
  
  ### Python version
  
  3.13.0
  
  ### Jupyter version
  
  _No response_
  
  ### Installation
  
  None