我在 pyqt5 視窗中嵌入了一個 matplotlib 圖和工具列,這是我的代碼:
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from PyQt5 import QtWidgets
class PlotWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(PlotWindow, self).__init__(parent=parent)
self.figure = Figure(tight_layout=True)
self.canvas = FigureCanvas(self.figure)
self.setCentralWidget(self.canvas)
self.toolbar = NavigationToolbar(self.canvas, self)
self.addToolBar(self.toolbar)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
mw = PlotWindow()
ax = mw.figure.add_subplot()
mw.show()
exit(app.exec_())
這就是它的樣子:

我可以將工具列拖到底部并將其停靠在那里:

但是我不能將它停靠在側面(左側或右側)。
這是您可以使用任何其他標準 pyqt5 工具列執行的操作,為什么它不適用于 matplotlib 工具列?以及如何使其作業?
我可以通過更改這一行在代碼中做到這一點:
# self.addToolBar(self.toolbar)
self.addToolBar(QtCore.Qt.LeftToolBarArea, self.toolbar)
結果是:

這就是我所追求的,但是如果我從左側取消停靠工具列,我將無法再將其停靠在那里,只能將其停靠在頂部和底部。
uj5u.com熱心網友回復:
matplotlib 提供的 QToolBar 配置為只允許拖動頂部和源代碼中看到的資訊:
self.setAllowedAreas(QtCore.Qt.ToolBarArea(
_to_int(_enum("QtCore.Qt.ToolBarArea").TopToolBarArea) |
_to_int(_enum("QtCore.Qt.ToolBarArea").BottomToolBarArea)))
解決方案是建立所有區域:
self.toolbar.setAllowedAreas(QtCore.Qt.ToolBarArea.AllToolBarAreas)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/350092.html
標籤:Python matplotlib pyqt5 工具栏
