Files
LiquidGUI/main.pyw
Dunestorm ba1d19cc0b LiquidGUI [1.1.0.0] DEV
- Implemented the ability to change fan speed.
- Placeholder GUI button to max out fan speed.
2023-08-19 18:04:38 +01:00

94 lines
3.5 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_worker import LiquidCTL_Init
from messagehandler import MessageHandler
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setWindowTitle("LiquidGUI (v.1.0.1.2)")
self.setFixedSize(450, 350)
self.setWindowFlags(Qt.WindowType.Dialog)
widget = QWidget(self)
font_style = QFont("Calibri", 16, weight=QFont.Weight.Bold)
self.lbl_device_name = QLabel()
self.lbl_device_name.setFont(font_style)
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()
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)
self.thread_manager = QThreadPool()
self.timer = QTimer()
self.timer.setInterval(1000)
self.timer.timeout.connect(lambda: self.thread_manager.start(lctl_worker.Update))
self.timer.timeout.connect(self.update_widgets)
self.timer.start()
def update_widgets(self):
self.lbl_device_name.setText(lctl_worker.device_name)
self.prg_temp.setValue(lctl_worker.device_temp)
self.prg_fanSpeed.setValue(lctl_worker.device_fanSpeed)
self.prg_pumpSpeed.setValue(lctl_worker.device_pumpSpeed)
if lctl_worker.device_fwVers != 0 or None:
self.lbl_fwVers.setText(f"Firmware: v{lctl_worker.device_fwVers}")
def max_fan_speed(self):
lctl_worker.SetFanSpeed(100)
app = QApplication(sys.argv)
icon = QIcon(":/icons/LiquidGUI.ico")
app.setWindowIcon(icon)
messagehandler = MessageHandler()
lctl_worker = LiquidCTL_Init()
# Show error and quit app if no devices are found
if lctl_worker.TestConnectionState() == True:
messagehandler.ShowNoDevicesFoundError()
sys.exit(1)
window = MainWindow()
window.setWindowIcon(icon)
window.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
qdarktheme.setup_theme("dark", custom_colors={"background": "#00000000"})
win32mica.ApplyMica(window.winId(), win32mica.MICAMODE.DARK)
window.show()
app.exec()