PyCharm如何设置matplotlib绘图独立窗口显示在副显示器上
Matplotlib 独立绘图窗口默认打开在副屏的实现方法
matplotlib 没有提供直接指定目标显示器的原生配置项,可通过GUI窗口位置控制的方式实现需求,适配PyCharm下独立弹窗显示的场景,具体操作如下:
- 首先确认当前matplotlib使用的绘图后端,执行以下代码查询:
import matplotlib; print(matplotlib.get_backend())
绝大多数情况下PyCharm弹出独立窗口用的是Qt5Agg/Qt6Agg后端,少数环境会使用TkAgg后端,对应不同的实现代码。
Qt系列后端(Qt5Agg/Qt6Agg)实现
在绘图逻辑中加入屏幕识别和窗口移动代码即可,不需要手动测量屏幕偏移,系统会自动读取多屏排列参数:
import matplotlib.pyplot as plt # 初始化画布 fig, ax = plt.subplots() # 此处写入正常绘图逻辑,比如 ax.plot([1,2,3], [4,5,6]) # 绑定窗口对象,识别多屏 win = fig.canvas.manager.window all_screens = win.screen().virtualSiblings() if len(all_screens) >= 2: # 索引0为主屏,1为第一块副屏,多副屏可按需修改索引 target_screen = all_screens[1] screen_geom = target_screen.availableGeometry() # 将窗口移动到副屏左上角,可自行加偏移值调整位置 win.move(screen_geom.x(), screen_geom.y()) # 可选:设置窗口初始尺寸 win.resize(screen_geom.width()//2, screen_geom.height()//2) plt.show()
TkAgg后端实现
Tk后端无法直接枚举所有屏幕参数,需要提前确认系统内副屏相对于主屏的坐标偏移,再手动指定窗口位置:
import matplotlib.pyplot as plt # 初始化画布 fig, ax = plt.subplots() # 此处写入正常绘图逻辑 # 绑定Tk窗口 win = fig.canvas.manager.window win.update_idletasks() # geometry参数格式为 {窗口宽}x{窗口高}+{x方向偏移}+{y方向偏移} # 比如主屏分辨率为1920*1080,副屏在主屏右侧,x偏移填1920即可让窗口落到副屏左上角 win.geometry("800x600+1920+0") plt.show()
提示:如果需要全局生效不需要每次写代码加逻辑,可以把窗口位置调整的代码封装为公共初始化函数,或者写入matplotlib的
matplotlibrc启动加载脚本中。
内容的提问来源于stack exchange,提问作者Niels de Vries
相关产品推荐
相关产品推荐

