import sys from PySide6.QtWidgets import ( QApplication, QMainWindow, QWidget, QPushButton, QGridLayout, QStackedWidget ) from PySide6.QtCore import Qt class HomeScreen(QWidget): def __init__(self, stack): super().__init__() layout = QGridLayout() btn_media = QPushButton("MEDIA") btn_radio = QPushButton("RADIO") btn_bt = QPushButton("BLUETOOTH") btn_settings = QPushButton("SETTINGS") for btn in (btn_media, btn_radio, btn_bt, btn_settings): btn.setMinimumSize(300, 180) btn_media.clicked.connect(lambda: stack.setCurrentIndex(1)) btn_radio.clicked.connect(lambda: stack.setCurrentIndex(2)) btn_settings.clicked.connect(lambda: stack.setCurrentIndex(3)) layout.addWidget(btn_media, 0, 0) layout.addWidget(btn_radio, 0, 1) layout.addWidget(btn_bt, 1, 0) layout.addWidget(btn_settings, 1, 1) self.setLayout(layout) class StubScreen(QWidget): def __init__(self, name, stack): super().__init__() layout = QGridLayout() btn_back = QPushButton("← BACK") btn_back.setMinimumSize(200, 100) btn_back.clicked.connect(lambda: stack.setCurrentIndex(0)) layout.addWidget(btn_back, 0, 0, alignment=Qt.AlignLeft) self.setLayout(layout) class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Car UI") self.showFullScreen() self.stack = QStackedWidget() self.stack.addWidget(HomeScreen(self.stack)) # 0 self.stack.addWidget(StubScreen("Media", self.stack)) # 1 self.stack.addWidget(StubScreen("Radio", self.stack)) # 2 self.stack.addWidget(StubScreen("Settings", self.stack)) # 3 self.setCentralWidget(self.stack) app = QApplication(sys.argv) app.setStyleSheet(open("styles/style.qss").read()) window = MainWindow() window.show() sys.exit(app.exec())