RCMM.py
功能:UI美化之StyleSheet
# -*- coding: utf-8 -*-
import sys
import util_ding
import util_csv
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from util_serial import *
from util_mulch import MultiCHWidget
from util_chart import *
from datetime import datetime
class MainTabWidget(QMainWindow):
def __init__(self):
self.gui_version = '1.0.0'
self.gui_subver = 'Beta01'
super().__init__()
self.setAutoFillBackground(True)
self.menuBar().setStyleSheet("QMenuBar {background-color: #B9D7D5;}")
self.statusBar().setStyleSheet(
"QStatusBar {background-color: #9EC4C5;}")
bar = self.menuBar()
file = bar.addMenu('File')
tool = bar.addMenu('Tool')
help = bar.addMenu('Help')
load_project = file.addAction('Load Project')
load_project.setShortcut("CTRL+L")
load_project.triggered.connect(self.onLoadProject)
save_project = file.addAction('Save Project')
save_project.setShortcut("CTRL+S")
save_project.triggered.connect(self.onSaveProject)
dingdingset = tool.addAction('DingDingSet')
dingdingset.triggered.connect(self.onDingDingSet)
about = help.addAction('About')
about.triggered.connect(self.onAboutClicked)
util_csv.createConfigFile(util_ding.ding_hook_url, util_ding.ding_secret)
serial = SerialWidget()
serial.sgn_run_time.connect(self.onRunTime)
tw = QTabWidget()
self.setCentralWidget(tw)
self.setStyleSheet('''#MainTabWidget.QFrame{
background-color: #0B0E11;
border:1px solid #161A1E;
border-radius:10px;
padding:2px 4px;
}''')
'''
标签页1
'''
MulW = MultiCHWidget(serial)
tw.addTab(MulW, "RealTime")
'''
标签页2
'''
ChtW = ChartWidget()
tw.addTab(ChtW, "History ")
def onLoadProject(self):
util_csv.loadProjectFile()
def onSaveProject(self):
util_csv.saveProjectFile()
def onDingDingSet(self):
dialog = QDialog()
dialog.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint);
lbl_hook_url = QLabel('Hook URL:', dialog)
lbl_hook_url.move(10, 10)
let_hook_url = QLineEdit('', dialog)
let_hook_url.setFixedWidth(300)
let_hook_url.move(70, 10)
lbl_secret = QLabel(' Secret :', dialog)
lbl_secret.move(10, 50)
let_secret = QLineEdit('', dialog)
let_secret.setFixedWidth(300)
let_secret.move(70, 50)
button = QPushButton('确定',dialog)
button.move(250, 100)
def update_ding_settings():
util_csv.updateConfigFile(let_hook_url.text(), let_secret.text())
print(util_ding.ding_hook_url)
print(util_ding.ding_secret)
dialog.close()
button.clicked.connect(update_ding_settings)
dialog.setWindowTitle('DindDingSetting')
dialog.setWindowModality(Qt.ApplicationModal)
dialog.exec()
def onAboutClicked(self):
QMessageBox.about(
self, "Version", "RCMM GUI Verion: {} \nSub Version: {}".format(self.gui_version, self.gui_subver))
def onRunTime(self, start_time: QDateTime):
self.statusBar().showMessage('Start Time: {}'.format(
start_time.toString("yyyy-MM-dd HH:mm:ss")))
def closeEvent(self, event):
# 默认直接调用QMessageBox.question 弹出询问的方法
reply = QMessageBox.question(self,
'RCMM',
"是否要退出程序?",
QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
elif reply == QMessageBox.No:
event.ignore()
else:
# 最小化到托盘
self.setWindowFlags(Qt.SplashScreen | Qt.FramelessWindowHint)
self.showMinimized()
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MainTabWidget()
win.setWindowTitle("RCMM Tools")
win.setWindowIcon(QIcon('res/logo.png'))
win.resize(1024, 840)
win.show()
sys.exit(app.exec_())