import sys import qdarktheme import win32mica import resources from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QLabel, QProgressBar, QPushButton from PySide6.QtCore import Qt, QTimer, QThreadPool from PySide6.QtGui import QFont, QIcon from LiquidCTL_Helper import LiquidCTL_Helper from MessageHandler import MessageHandler class MainWindow(QMainWindow): def __init__(self, lctl): super(MainWindow, self).__init__() self.setWindowTitle("LiquidGUI (v.1.1.0.0)") self.setFixedSize(450, 350) self.setWindowFlags(Qt.WindowType.Dialog) self.lctl = lctl # Widgets ########################################## self.lbl_device_name = QLabel(font=QFont("Calibri", 16, weight=QFont.Weight.Bold), alignment=Qt.AlignmentFlag.AlignCenter) self.lbl_temp = QLabel("Liquid Temperature:") self.prg_temp = QProgressBar(format="%v°C", minimum=0, maximum=50) self.lbl_fanSpeed = QLabel("Fan Speed:") self.prg_fanSpeed = QProgressBar(format="%v rpm", minimum=520, maximum=1700) self.lbl_pumpSpeed = QLabel("Pump Speed:") self.prg_pumpSpeed = QProgressBar(format="%v rpm", minimum=1900, maximum=2700) self.btn_maxFanSpeed = QPushButton(text="Max Fan Speed") self.btn_maxFanSpeed.clicked.connect(self.max_fan_speed) self.lbl_fwVers = QLabel(alignment=Qt.AlignmentFlag.AlignRight) # Layout ########################################## widget = QWidget(self) layout = QVBoxLayout(widget) layout.addWidget(self.lbl_device_name) layout.addWidget(self.lbl_temp) layout.addWidget(self.prg_temp) layout.addWidget(self.lbl_fanSpeed) layout.addWidget(self.prg_fanSpeed) layout.addWidget(self.lbl_pumpSpeed) layout.addWidget(self.prg_pumpSpeed) layout.addWidget(self.lbl_fwVers) layout.addWidget(self.btn_maxFanSpeed) layout.setSpacing(10) self.setLayout(layout) self.setCentralWidget(widget) self.setContentsMargins(40, 20, 40, 20) # Threading ####################################### self.thread_manager = QThreadPool() self.timer = QTimer() self.timer.setInterval(1000) self.timer.timeout.connect(lambda: self.thread_manager.start(self.lctl.Update)) self.timer.timeout.connect(self.update_widgets) self.timer.start() def update_widgets(self): self.lbl_device_name.setText(self.lctl.device_name) self.prg_temp.setValue(self.lctl.device_temp) self.prg_fanSpeed.setValue(self.lctl.device_fanSpeed) self.prg_pumpSpeed.setValue(self.lctl.device_pumpSpeed) if self.lctl.device_fwVers != None: self.lbl_fwVers.setText(f"Firmware: v{self.lctl.device_fwVers}") def max_fan_speed(self): self.lctl.SetFanSpeed(100) def main(): app = QApplication(sys.argv) icon = QIcon(":/icons/LiquidGUI.ico") app.setWindowIcon(icon) window = MainWindow(LiquidCTL_Helper()) window.setWindowIcon(icon) window.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground) qdarktheme.setup_theme("dark", custom_colors={"background": "#00000000"}) win32mica.ApplyMica(window.winId(), win32mica.MICAMODE.DARK) # Show error and quit app if no devices are found if window.lctl.TestConnectionState() == True: MessageHandler.ShowNoDevicesFoundError() sys.exit(1) else: window.show() app.exec() if __name__ == "__main__": main()