2015-11-23 149 views
1

我正在開發一個涉及鼠標交互的開源項目(通過mpl_connect),其散點圖使用pyplot matplotlib。我能夠從與出現禁用底部工具欄:如何在Python matplotlib窗口中鎖定窗口大小調整?

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

但我還沒有找到用於鎖定窗口的寬度/高度和禁用調整大小類似的事情。 (目前,可點擊區域是在啓動時計算的,如果窗口調整大小,則不會更改。)是否有一種方法可以暫時禁用調整大小,直到我實現允許調整大小而不中斷的版本?

回答

1

Matplotlib支持多個後端。要查看您所使用的後端(我有TkAgg):

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

後端可以是GTKAgg之一,GTK3AggGTKGTKCairoGTK3CairoWXAggWXTkAggQt4AggQt5Aggmacosx(見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') 
+0

我正在使用TkAgg,此解決方案完美工作。 – Matt

0

我不知道後端獨立的方式來做到這一點,但有不同的後端特定的解決方案。例如,對於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而不是整個窗口。