Python学习之StyleSheet

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_())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值