【问题标题】:How do I lock window resizing in a Python matplotlib window?如何在 Python matplotlib 窗口中锁定窗口大小调整?
【发布时间】:2015-11-23 22:02:52
【问题描述】:

我正在开发一个开源项目,该项目涉及鼠标交互(通过 mpl_connect)与散点图在 ma​​tplotlib 中使用 pyplot。我能够禁止底部工具栏出现:

matplotlib.rcParams['toolbar'] = 'None'

但我还没有找到任何类似的东西来锁定窗口的宽度/高度和禁用调整大小。 (目前,可点击区域是在启动时计算的,如果调整窗口大小,则不会更改。)有没有办法暂时禁用调整大小,直到我实现一个允许调整大小而不会中断的版本?

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    Matplotlib 支持多个后端。要查看您正在使用的后端(我有 TkAgg):

    >>> pyplot.get_backend()
    u'TkAgg'
    

    后端可以是GTKAggGTK3AggGTKGTKCairoGTK3CairoWXAggWXTkAggQt4Agg、@98765433 之一@(见http://matplotlib.org/faq/usage_faq.html#what-is-a-backend)。

    使用TkAgg 后端,您可以使用resizable(False, False) (http://www.tkdocs.com/tutorial/windows.html) 防止窗口调整宽度和高度

    from matplotlib import pyplot
    
    bck = pyplot.get_backend()
    print "Backend is " + bck
    mng = pyplot.get_current_fig_manager()
    if (bck == "TkAgg"):   
        mng.window.resizable(False, False)
    elif (bck == "QT4Agg"):
        print "See previous answer"
    else:
        print "?"
    

    如果您安装了所需的软件包,您可以使用例如切换后端

    >>> pyplot.switch_backend('QT4Agg')
    

    【讨论】:

    • 我使用的是 TkAgg,这个解决方案效果很好。
    【解决方案2】:

    我不知道有一种独立于后端的方式来做到这一点,但有各种特定于后端的解决方案。例如,对于 Qt 后端,您可以使用 QWidget.setFixedSize:

    import matplotlib
    matplotlib.use("Qt4Agg")
    from matplotlib import pyplot as plt
    
    fig, ax = plt.subplots(1, 1)
    win = fig.canvas.window()
    win.setFixedSize(win.size())
    
    plt.show()
    

    要固定画布绘图区域的大小而不是整个窗口,您可以改用fig.canvas.setFixedSize

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多