Skip to content

AttributeError: 'FigureManagerMac' object has no attribute 'window' #230

Description

@mumu-create

Your OS

Mac

Your Python version

Python3.13.13 ( python3.11.15 also have this problem)

What is your library version?

pose2sim 0.10.47

Your problem

Hello! I am a first-year graduate student at a sports university in China. First of all, I would like to sincerely thank you for Pose2Sim—it has provided great conceptual inspiration and technical support for my thesis project.I am using a MacBook with the M5 Pro chip. However, I ran into an issue at the very first step: Pose2Sim.calibration(), problem like this:
" **
In [1]: from Pose2Sim import Pose2Sim

In [2]: Pose2Sim.calibration()
Matplotlib is building the font cache; this may take a moment.
Failed to extract font properties from /System/Library/PrivateFrameworks/FontServices.framework/Resources/Reserved/PingFangUI.ttc: FT_Open_Face (ft2font.cpp line 200) failed with error 0x02: unknown file format
Failed to extract font properties from /System/Library/Fonts/Apple Color Emoji.ttc: Non-scalable fonts are not supported
Failed to extract font properties from /System/Library/Fonts/LastResort.otf: tuple indices must be integers or slices, not str
Failed to extract font properties from /System/Library/Fonts/Supplemental/NISC18030.ttf: Non-scalable fonts are not supported
generated new fontManager


Camera calibration
On Friday 26. June 2026, 13:23:06
Calibration directory: ~/demo/calibration

Calculating intrinsic parameters...

Camera int_cam01_img:
cam01_01_int.jpg: Corners found.

AttributeError Traceback (most recent call last)
Cell In[2], line 1
----> 1 Pose2Sim.calibration()

File /site-packages/Pose2Sim/Pose2Sim.py:374, in calibration(config)
372 def calibration(config=None):
373 pipeline = Pose2SimPipeline(config)
--> 374 pipeline.calibration()

File /site-packages/Pose2Sim/Pose2Sim.py:212, in Pose2SimPipeline.calibration(self)
209 logging.info("---------------------------------------------------------------------\n")
211 start = time.time()
--> 212 calibrate_cams_all(config_dict)
213 elapsed = time.time() - start
214 logging.info(f'\nCalibration took {elapsed:.2f} seconds.\n')

File /calibration.py:1627, in calibrate_cams_all(config_dict)
1624 calib_fun = calib_mapping[calib_full_type]
1626 # Calibrate
-> 1627 ret, C, S, D, K, R, T = calib_fun(*args_calib_fun)
1629 # Write calibration file
1630 toml_write(calib_output_path, C, S, D, K, R, T)

File /calibration.py:516, in calib_calc_fun(calib_dir, intrinsics_config_dict, extrinsics_config_dict, save_debug_images)
513 # calculate intrinsics otherwise
514 else:
515 logging.info(f'\nCalculating intrinsic parameters...')
--> 516 ret, C, S, D, K, R, T = calibrate_intrinsics(calib_dir, intrinsics_config_dict, save_debug_images=save_debug_images)
517 nb_cams_intrinsics = len(C)
519 # Early write intrinsics in calibration file

File /calibration.py:767, in calibrate_intrinsics(calib_dir, intrinsics_config_dict, save_debug_images, extrinsics_method)
765 # If not satisfied, tries to detect corners
766 plt.close('all')
--> 767 imgp_confirmed, objp_confirmed = findCorners(img_path, intrinsics_corners_nb, objp=objp, show=show_detection_intrinsics)
768 if isinstance(imgp_confirmed, np.ndarray):
769 imgpoints.append(imgp_confirmed)

File /calibration.py:1036, in findCorners(img_path, corner_nb, objp, show)
1034 if var_to_delete in globals():
1035 del globals()[var_to_delete]
-> 1036 imgp_objp_confirmed = imgp_objp_visualizer_clicker(img, imgp=imgp, objp=objp, img_path=img_path)
1037 else:
1038 imgp_objp_confirmed = imgp

File /calibration.py:1381, in imgp_objp_visualizer_clicker(img, imgp, objp, img_path)
1379 ax.imshow(img)
1380 figManager = plt.get_current_fig_manager()
-> 1381 figManager.window.showMaximized()
1382 plt.tight_layout()
1384 # Allow for zoom and pan in image

AttributeError: 'FigureManagerMac' object has no attribute 'window'** "

I also tried using an AI agent to help diagnose the problem, and it seemed to point to an issue with the interactive backend. Forcing the use of TkAgg made the interaction work properly. And I don't have a deep understanding of the code, so I'm not sure if this modification is correct or if it might cause other issues down the line. I would really appreciate it if you could give me some official guidance on this.

Thank you very much for your time and help!

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions