PyQt4如何在嵌入式Matplotlib FigureCanvas周围绘制边框

时间:2015-06-01 18:24:57

标签: python matplotlib pyqt4

我有一个带有嵌入式mpl图的pyqt应用程序,如下所示:

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
...
self.LEEM_fig, (self.LEEM_ax, self.IV_ax) = plt.subplots(1, 2, figsize=(8,8), dpi=100)
self.LEEM_canvas = FigureCanvas(self.LEEM_fig)
...

此mpl画布与QGroupBox内的一组按钮水平对齐

GroupBox使用setStyleSheet:

在其周围绘制边框
IVGroup.setStyleSheet("QGroupBox { background-color: \
                            rgb(228, 241, 254); border: \
                            3px solid rgb(58, 83, 155); }")

这是一个指向UI当前外观图片的链接 User Interface

我的问题是: 如何围绕FigureCanvas绘制边框? 我天真地尝试将styleSheet设置为self.LEEM_Canvas,这是一个FigureCanvas 但那不起作用

self.LEEM_canvas.setStyleSheet("FigureCanvas { background-color: \
                            rgb(228, 241, 254); border: \
                            3px solid rgb(58, 83, 155); }")

我接下来尝试的唯一一件事就是在当前选项卡中嵌入一个单独的QFrame(通用QWidgets根据Qt样式表引用不支持边框)并将此框架水平地与QGroupBox对齐 - 然后将mpl FigureCanvas嵌入到QFrame中 - 然后在QFrame周围绘制一个边框 - 但这似乎是一种非常迂回的方式

1 个答案:

答案 0 :(得分:0)

我找到的唯一解决方法是将FigureCanvas放入QHboxLayout或QVBoxLayout,然后将该布局添加到QGroupBox,然后使用QSS样式字符串调用QGroupBox.setStyle(),如“”QGroupBox {                 background-color:rgb(48,47,47);                 边界:8px solid rgb(108,122,137);                 border-radius:6px                 } “”“