66 lines
1.9 KiB
Python
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())
|