Files
LiquidGUI/main.pyw
Dunestorm eda2fbeb71 LiquidGUI [1.0.3.2] Release
- Refactored some code.
- Corrected fonts and updated styles.
2024-06-30 14:57:29 +01:00

114 lines
4.3 KiB
Python

import sys
import win32mica
from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QLabel, QProgressBar
from PySide6.QtCore import Qt, QTimer, QThreadPool
from PySide6.QtGui import QFont, QIcon
from LiquidCTL_Helper import LiquidCTL_Helper
from MessageHandler import MessageHandler
import resources, pkg_resources.extern
from styles.SubLabel import SubLabel
from styles.SubLabelValue import SubLabelValue
class MainWindow(QMainWindow):
""" Main application window. """
def __init__(self, lctl):
super(MainWindow, self).__init__()
self.setWindowTitle("LiquidGUI (v.1.0.3.2)")
self.setFixedSize(450, 385)
self.lctl = lctl
# Widgets ##########################################
self.lbl_device_name = QLabel(font=QFont("Calibre",
14,
weight=QFont.Weight.Bold),
alignment=Qt.AlignmentFlag.AlignCenter)
self.lbl_temp = SubLabel(value="💧 Liquid Temperature:")
self.prg_temp = QProgressBar(textVisible=False,
minimum=0,
maximum=50)
self.lbl_value_prg_temp = SubLabelValue()
self.lbl_fanspeed = SubLabel(value="🍃 Fan Speed:")
self.prg_fanspeed = QProgressBar(textVisible=False,
minimum=520,
maximum=1700)
self.lbl_value_prg_fanspeed = SubLabelValue()
self.lbl_pumpspeed = SubLabel(value="⛽ Pump Speed:")
self.prg_pumpspeed = QProgressBar(textVisible=False,
minimum=1900,
maximum=2700)
self.lbl_value_prg_pumpspeed = SubLabelValue()
self.lbl_fwvers = SubLabelValue()
# 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_value_prg_temp)
layout.addWidget(self.lbl_fanspeed)
layout.addWidget(self.prg_fanspeed)
layout.addWidget(self.lbl_value_prg_fanspeed)
layout.addWidget(self.lbl_pumpspeed)
layout.addWidget(self.prg_pumpspeed)
layout.addWidget(self.lbl_value_prg_pumpspeed)
layout.addWidget(self.lbl_fwvers)
layout.setSpacing(10)
self.setLayout(layout)
self.setCentralWidget(widget)
self.setContentsMargins(20, 20, 20, 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):
""" Update widgets using LiquidCTL library."""
self.lbl_device_name.setText("- " + self.lctl.device_name + " -")
self.prg_temp.setValue(self.lctl.device_temp)
self.lbl_value_prg_temp.setText(str(self.lctl.device_temp) + "°C")
self.prg_fanspeed.setValue(self.lctl.device_fanSpeed)
self.lbl_value_prg_fanspeed.setText(str(self.lctl.device_fanSpeed) + " rpm")
self.prg_pumpspeed.setValue(self.lctl.device_pumpSpeed)
self.lbl_value_prg_pumpspeed.setText(str(self.lctl.device_pumpSpeed) + " rpm")
if self.lctl.device_fwVers is not None:
self.lbl_fwvers.setText(f"Firmware: v{self.lctl.device_fwVers}")
def main():
""" Initialize application and setup window parameters. """
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():
MessageHandler().ShowNoDevicesFoundError()
sys.exit(1)
else:
win32mica.ApplyMica(window.winId(), win32mica.MICAMODE.DARK)
window.show()
app.exec()
if __name__ == "__main__":
main()