import sys
from os.path import join, dirname, abspath

from qtpy import uic
from qtpy.QtCore import Slot
from qtpy.QtWidgets import QApplication, QMainWindow, QMessageBox

import qtmodern.styles
import qtmodern.windows


_UI = join(dirname(abspath(__file__)), 'mainwindow.ui')


class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        uic.loadUi(_UI, self)

    @Slot()
    def on_pushButton_clicked(self):
        self.close()

    @Slot()
    def closeEvent(self, event):
        reply = QMessageBox.question(self, 'Exit', 'Do you want to exit?')

        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()


if __name__ == '__main__':
    app = QApplication(sys.argv)

    qtmodern.styles.dark(app)
    mw = qtmodern.windows.ModernWindow(MainWindow())
    mw.show()

    sys.exit(app.exec_())

import sys
from os.path import join, dirname, abspath

from qtpy import uic
from qtpy.QtCore import Slot
from qtpy.QtWidgets import QApplication, QMainWindow, QMessageBox

import qtmodern.styles
import qtmodern.windows


_UI = join(dirname(abspath(__file__)), 'mainwindow.ui')


class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.ui = uic.loadUi(_UI, self)
        
        self.ui.actionLight.triggered.connect(self.lightTheme)
        self.ui.actionDark.triggered.connect(self.darkTheme)

    def lightTheme(self):
        qtmodern.styles.light(QApplication.instance())

    def darkTheme(self):
        qtmodern.styles.dark(QApplication.instance())

    @Slot()
    def on_pushButton_clicked(self):
        self.close()

    @Slot()
    def closeEvent(self, event):
        reply = QMessageBox.question(self, 'Exit', 'Do you want to exit?')

        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()


if __name__ == '__main__':
    app = QApplication(sys.argv)

    qtmodern.styles.dark(app)
    mw = qtmodern.windows.ModernWindow(MainWindow())
    mw.show()

    sys.exit(app.exec_())

Update example to switch between light and dark themes
Update example to switch between light and dark themes
  import sys
  from os.path import join, dirname, abspath
  
  from qtpy import uic
  from qtpy.QtCore import Slot
  from qtpy.QtWidgets import QApplication, QMainWindow, QMessageBox
  
  import qtmodern.styles
  import qtmodern.windows
  
  
  _UI = join(dirname(abspath(__file__)), 'mainwindow.ui')
  
  
  class MainWindow(QMainWindow):
      def __init__(self):
          QMainWindow.__init__(self)
  
-         uic.loadUi(_UI, self)
+         self.ui = uic.loadUi(_UI, self)
+         
+         self.ui.actionLight.triggered.connect(self.lightTheme)
+         self.ui.actionDark.triggered.connect(self.darkTheme)
+ 
+     def lightTheme(self):
+         qtmodern.styles.light(QApplication.instance())
+ 
+     def darkTheme(self):
+         qtmodern.styles.dark(QApplication.instance())
  
      @Slot()
      def on_pushButton_clicked(self):
          self.close()
  
      @Slot()
      def closeEvent(self, event):
          reply = QMessageBox.question(self, 'Exit', 'Do you want to exit?')
  
          if reply == QMessageBox.Yes:
              event.accept()
          else:
              event.ignore()
  
  
  if __name__ == '__main__':
      app = QApplication(sys.argv)
  
      qtmodern.styles.dark(app)
      mw = qtmodern.windows.ModernWindow(MainWindow())
      mw.show()
  
      sys.exit(app.exec_())
  
Update example to switch between light and dark themes
## Code Before:
import sys
from os.path import join, dirname, abspath

from qtpy import uic
from qtpy.QtCore import Slot
from qtpy.QtWidgets import QApplication, QMainWindow, QMessageBox

import qtmodern.styles
import qtmodern.windows


_UI = join(dirname(abspath(__file__)), 'mainwindow.ui')


class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        uic.loadUi(_UI, self)

    @Slot()
    def on_pushButton_clicked(self):
        self.close()

    @Slot()
    def closeEvent(self, event):
        reply = QMessageBox.question(self, 'Exit', 'Do you want to exit?')

        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()


if __name__ == '__main__':
    app = QApplication(sys.argv)

    qtmodern.styles.dark(app)
    mw = qtmodern.windows.ModernWindow(MainWindow())
    mw.show()

    sys.exit(app.exec_())

## Instruction:
Update example to switch between light and dark themes
## Code After:
import sys
from os.path import join, dirname, abspath

from qtpy import uic
from qtpy.QtCore import Slot
from qtpy.QtWidgets import QApplication, QMainWindow, QMessageBox

import qtmodern.styles
import qtmodern.windows


_UI = join(dirname(abspath(__file__)), 'mainwindow.ui')


class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.ui = uic.loadUi(_UI, self)
        
        self.ui.actionLight.triggered.connect(self.lightTheme)
        self.ui.actionDark.triggered.connect(self.darkTheme)

    def lightTheme(self):
        qtmodern.styles.light(QApplication.instance())

    def darkTheme(self):
        qtmodern.styles.dark(QApplication.instance())

    @Slot()
    def on_pushButton_clicked(self):
        self.close()

    @Slot()
    def closeEvent(self, event):
        reply = QMessageBox.question(self, 'Exit', 'Do you want to exit?')

        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()


if __name__ == '__main__':
    app = QApplication(sys.argv)

    qtmodern.styles.dark(app)
    mw = qtmodern.windows.ModernWindow(MainWindow())
    mw.show()

    sys.exit(app.exec_())
