car_ui/main.py
2026-01-07 23:14:24 +03:00

66 lines
1.9 KiB
Python

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())