Fatal Python Error when dragging matplotlib plot if PyQt window is opened

Creating the Qt application and starting its loop results in making any of its widget modal to the plot.

What you could do is to use the "Qt5Agg" engine, create the widget in the function and then call show() when the button is clicked:

matplotlib.use('Qt5Agg')

# ...

def MyPlot():
    # ...
    button_1.on_clicked(lambda event: SaySomething(event))

    gui_object = PlotEditor()
    button_2.on_clicked(lambda *args: gui_object.show())

    plt.show()

If you need to use the widget to change aspects of the plot, then I suggest you to add a QDialogButtonBox with a basic Ok button, and connect its accepted signal to a function that updates the plot.

def MyPlot():
    # ...
    button_1.on_clicked(lambda event: SaySomething(event))

    gui_object = PlotEditor()
    button_2.on_clicked(lambda *args: gui_object.show())
    gui_object.accepted.connect(lambda: doSomething(gui_object))

    plt.show()

def doSomething(gui_object):
    print(gui_object.check_1.isChecked())


class PlotEditor(QDialog):
    # ...
    def initGUI(self):
        #example gui elements
        self.main_grid = QGridLayout(self)
        self.setWindowTitle("test window")
        self.groupbox_1 = QGroupBox()
        self.groupbox_1.setCheckable(True)
        group_1_layout = QHBoxLayout(self.groupbox_1)

        group_1_layout.addWidget(QLabel("#placeholder1"))
        group_1_layout.addWidget(QPushButton("my_button"))

        self.groupbox_2 = QGroupBox()
        self.groupbox_2.setCheckable(True)
        group_2_layout = QHBoxLayout()
        self.groupbox_2.setLayout(group_2_layout)
        self.combo_1 = QComboBox() # <- instance attribute
        group_2_layout.addWidget(self.combo_1)
        self.check_1 = QCheckBox("toggle") # <- instance attribute
        group_2_layout.addWidget(self.check_1)

        self.main_grid.addWidget(self.groupbox_1, 0, 0)
        self.main_grid.addWidget(self.groupbox_2, 1, 0)

        buttonBox = QDialogButtonBox(QDialogButtonBox.Ok)
        self.main_grid.addWidget(buttonBox)
        self.accepted = buttonBox.accepted
        self.accepted.connect(self.hide)

Note: creating a combo as a child of another combo is both wrong and pointless (see group_2_layout.addWidget(QComboBox(combo_1))).
Also, if you need those widgets to get the configuration you must create instance attributes for them as I did above.