在pyq中更改大小时,图形上的黑色边框显示为NVAS

2024-09-30 20:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将matplotlib(版本3.0.0)图形嵌入到pyqt5gui(版本5.9.2)中。因此,我正在创建一个画布并将其添加到布局中。但是,当我开始更改大小属性(如canvas.setFixedSize(500,500)),然后通过拖动窗口的一角来更改gui的大小时,我会得到一个黑色的边框:black border。你知道吗

这种行为可以通过添加fig.patch.set_facecolor('#ffffff')来修复。然而,我想知道这种行为是否是预期的,或者是否有另一种方法来防止黑边界出现?你知道吗

import sys
from PyQt5.QtWidgets import (QWidget, QGridLayout,QPushButton, QApplication, QSizePolicy)

from matplotlib.backends.qt_compat import QtCore, QtWidgets, is_pyqt5
if is_pyqt5():
    from matplotlib.backends.backend_qt5agg import (
        FigureCanvas, NavigationToolbar2QT as NavigationToolbar)
else:
    from matplotlib.backends.backend_qt4agg import (
        FigureCanvas, NavigationToolbar2QT as NavigationToolbar)
from matplotlib.figure import Figure
import matplotlib.pyplot as plt

class ApplicationWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self._main = QtWidgets.QWidget()
        self.setCentralWidget(self._main)
        layout = QGridLayout(self._main)        

        fig, ax = plt.subplots(1,1)
        canvas = FigureCanvas(fig)
        # enabling one of following options leads to black frame
        #canvas.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) 
        #canvas.setFixedSize(500,500)

        #which can be fixed by
        #fig.patch.set_facecolor('#ffffff')

        layout.addWidget(canvas)

if __name__ == "__main__":
    # Check whether there is already a running QApplication (e.g., if running
    # from an IDE).
    qapp = QtWidgets.QApplication.instance()
    if not qapp:
        qapp = QtWidgets.QApplication(sys.argv)

    app = ApplicationWindow()
    app.show()
    qapp.exec_()

Tags: fromimportselfifmatplotlibismainfig