Files
LiquidGUI/main.pyw
Dunestorm c8ca1e881d LiquidGUI [1.0.1.3] Bugfix Release
- Moved device init into dedicated function to prevent unwanted
device re-init.
- Library renaming.
2024-03-10 20:28:00 +00:00

90 lines
3.4 KiB
Python

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.0.2.0)")
self.setFixedSize(450, 350)
self.lctl = lctl
# Widgets ##########################################
self.lbl_device_name = QLabel(font=QFont("Calibri", 16, weight=QFont.Weight.Bold))
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.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.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 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)
# Show error and quit app if no devices are found
if window.lctl.TestConnectionState() == True:
MessageHandler().ShowNoDevicesFoundError()
sys.exit(1)
else:
qdarktheme.setup_theme("dark", custom_colors={"background": "#00000000"})
win32mica.ApplyMica(window.winId(), win32mica.MICAMODE.DARK)
window.show()
app.exec()
if __name__ == "__main__":
main()