from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton
from PySide6.QtWidgets import QWidget, QVBoxLayout
import pyqtgraph as pg
import numpy as np
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.cw = QWidget(self)
self.cw.setAutoFillBackground(True)
self.setCentralWidget(self.cw)
self.layout = QVBoxLayout()
self.cw.setLayout(self.layout)
self.ImgWidget = MyImageWidget(parent=self)
self.layout.addWidget(self.ImgWidget)
self.inv_btn = QPushButton('Invert Image')
self.inv_btn.clicked.connect(self.ImgWidget.invert_image)
self.layout.addWidget(self.inv_btn)
self.resize(800, 800)
self.show()
class MyImageWidget(pg.ImageView):
def __init__(self, parent):
super().__init__(parent, view=pg.PlotItem())
# Clean up the interface
self.ui.histogram.hide()
self.ui.roiBtn.hide()
self.ui.menuBtn.hide()
self.plot = self.getView()
self.plot.hideAxis('left')
self.plot.hideAxis('bottom')
self.plot.setMenuEnabled(False)
self.inverted = False
# 300x200 img random noise
img = np.random.normal(size=(300, 200))
self.setImage(img)
self.def_cmap = self.ui.histogram.gradient.colorMap()
self.inv_cmap = self.ui.histogram.gradient.colorMap()
self.inv_cmap.reverse()
def invert_image(self):
self.inverted = not(self.inverted)
if self.inverted:
self.setColorMap(self.inv_cmap)
else:
self.setColorMap(self.def_cmap)
def main():
app = QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()