将类中的参数传递给ApplicationWindow()

时间:2018-05-03 18:11:45

标签: python-3.x matplotlib pyqt5 nibabel

我如何将类Orthocanvas中的变量fig作为参数传递给aw = ApplicationWindow

global fig

class OrthoCanvas(FigureCanvas):
    def __init__(self, parent=None, width=5, height=4, dpi=100):
        fig = Figure(figsize=(width, height), dpi=dpi)
        self._figs = set([a.figure for a in self.axes])
        data = load_nii('d_crop_mni_s01_t1w_hires_defaced_MNI.nii')
        data_read = read_img_data(data)
        for fig in self._figs:
            fig.canvas.mpl_connect('scroll_event', self._on_scroll)
            fig.canvas.mpl_connect('motion_notify_event', self._on_mouse)
            fig.canvas.mpl_connect('button_press_event', self._on_mouse)
            fig.canvas.mpl_connect('key_press_event', self._on_keypress)
            fig.canvas.mpl_connect('close_event', self._cleanup)   

        ortho = OrthoView3D(fig)
        FigureCanvas.__init__(self, fig)
        self.setParent(parent)

        FigureCanvas.setSizePolicy(self,
                                QtWidgets.QSizePolicy.Expanding,
                                QtWidgets.QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)


class Orthoview3D(self, fig, data, OrthoCanvas):
    def __init__ (self, fig, data):
        super().__init__(self)
        data = np.asanyarray(data)
        xrows, xcols = 2,2
        self._axes = [fig.add_subplot(xrows, xcols, i + 1) for i in range(xrows * xcols)
        fig.set_size_inches((8, 8), forward=True)


class ApplicationWindow(QtWidgets.QMainWindow):
    def __init__(self, fig):
        super().__init__(self, fig)

        self.canvas = OrthoCanvas()

        self.main_widget = QtWidgets.QWidget(self)
        self.main_widget.resize(1000,1000)
        self.main_widget.move(700,50)

qApp = QtWidgets.QApplication(sys.argv)

aw = ApplicationWindow()
aw.show()   
sys.exit(qApp.exec_())

0 个答案:

没有答案