0314更新

main
parent 455857c88e
commit 2f8f8d9a0f

@ -1,16 +1,3 @@
QMdiSubWindow {
font-size: 18px;
font-weight: bold;
}
QComboBox#dataTypeCombox, QComboBox#orderCombox{ QComboBox#dataTypeCombox, QComboBox#orderCombox{
font-size: 20px; font-size: 20px;
@ -32,50 +19,6 @@ QTabBar::close-button:hover {
} }
QTabBar::tab:hover {
background-color: #cbdeec;
}
QTabBar::tab{
background: #f0f0f0;
/* border: 2px;*/
min-width: 200px;
min-height: 40px;
font: 20px;
font-family: ".SFNSDisplay-Regular";
}
QTabBar#areaTabBar::tab{
/* min-width: 100px;*/
font: 20px;
}
QTabBar::tab:selected {
background-color: #809ac2;
font: bold;
border-radius: 3px;
margin-bottom: -4px
}
QDockWidget{ QDockWidget{
@ -86,7 +29,9 @@ QDockWidget{
font-family: ".SFNSDisplay-Regular"; font-family: ".SFNSDisplay-Regular";
border: 1px solid black; /* border: 1px solid black;*/
border: none;
} }
@ -94,15 +39,13 @@ QDockWidget::title{
font-size: 20px; font-size: 20px;
background-color: #cbdeec; background-color: #2084F6;
color: white; color: white;
text-align: center; text-align: center;
} }
@ -151,11 +94,14 @@ QWidget#deviceWidget{
border: 1px solid gray; border: 1px solid gray;
} }
QTabWidget::tab-bar{ QTabWidget{
background-color: black; border: none;
background-color: white;
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

@ -144,6 +144,8 @@ class AreaWidget(QWidget):
self.leftLayout = QGridLayout() self.leftLayout = QGridLayout()
self.rightLayout = QGridLayout() self.rightLayout = QGridLayout()
self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setContentsMargins(0, 0, 0, 0)
self.leftLayout.setContentsMargins(0, 0, 0, 0)
self.rightLayout.setContentsMargins(0, 0, 0, 0)
LimitData = self.devicesManange.getLimitData(self.areaTabWidget.deviceName) LimitData = self.devicesManange.getLimitData(self.areaTabWidget.deviceName)

@ -1,6 +1,7 @@
import json import json
from PyQt5.QtWidgets import QMainWindow, QDialog, QTabWidget, QPushButton, QSpacerItem, QSizePolicy,QMessageBox, QHBoxLayout, QWidget from PyQt5.QtWidgets import QMainWindow, QDialog, QTabWidget, QPushButton, QSpacerItem, QSizePolicy\
,QMessageBox, QHBoxLayout, QWidget, QTabBar, QProxyStyle, QStyle
from PyQt5.QtGui import QIcon from PyQt5.QtGui import QIcon
from PyQt5.QtCore import QSize from PyQt5.QtCore import QSize
@ -13,7 +14,212 @@ from utils.DBModels.DeviceModels import DeviceDB
from model.ProjectModel.DeviceManage import DevicesManange from model.ProjectModel.DeviceManage import DevicesManange
from UI.DeviceDialogWidget import DeviceDialog from UI.DeviceDialogWidget import DeviceDialog
class DeviceWidget(QTabWidget): from PyQt5.QtWidgets import QApplication, QStyleOptionTab, QTabBar, QWidget
from PyQt5.QtGui import QPainter, QPen, QColor, QPainterPath, QPolygonF, QFontMetrics, QTextOption, QFont
from PyQt5.QtCore import Qt, QRectF, QPointF
class NewChromeTabStyle(QProxyStyle):
def drawControl(self, element, option, painter, widget):
# painter.save()
# painter.setPen(Qt.red);
# painter.restore();
if element == QStyle.CE_TabBarTabLabel:
tab = option
# print(type(tab))
textRect = QRectF(self.subElementRect(QStyle.SE_TabBarTabText, tab, widget))
painter.save()
if (tab.state & QStyle.State_Selected):
painter.setPen(QPen(QColor("black")))
elif (tab.state & QStyle.State_MouseOver):
painter.setPen(QPen(QColor("black")))
else:
painter.setPen(QPen(QColor("black")))
option = QTextOption()
# 设置对齐方式Qt.AlignLeft 和 Qt.AlignVCenter 分别对应左对齐和垂直居中
font = QFont();
font.setPointSize(20);
painter.setFont(font);
option.setAlignment(Qt.AlignCenter | Qt.AlignVCenter)
# 设置换行模式为不换行
option.setWrapMode(QTextOption.NoWrap)
painter.drawText(textRect, tab.text, option)
painter.restore()
elif element == QStyle.CE_TabBarTabShape:
tab = option
painter.setRenderHint(QPainter.Antialiasing);
shapeRect = QRectF(tab.rect);
arcLen = shapeRect.height() / 2;
if (tab.state & QStyle.State_Selected):
painter.save();
pen = QPen(Qt.red);
pen.setWidthF(0.5);
painter.setPen(pen);
painter.restore();
painter.save();
shapeRect.setX(shapeRect.x() - arcLen);
shapeRect.setWidth(shapeRect.width() + arcLen *3/ 4);
path = QPainterPath();
arcRect1 = QRectF(shapeRect.x(),
shapeRect.y() + shapeRect.height() / 3,
arcLen,
shapeRect.height() * 2 / 3);
path.moveTo(QPointF(arcRect1.x(),
arcRect1.y() + arcRect1.height()));
path.lineTo(QPointF(arcRect1.x() + arcRect1.width() / 2,
arcRect1.y() + arcRect1.height()));
# // Starting from 270°, returning to the arc of 90°
path.arcTo(arcRect1, 270.0, 90.0);
path.lineTo(QPointF(arcRect1.x() + arcRect1.width(),
arcRect1.y()));
arcRect2 = QRectF(shapeRect.x() + arcRect1.width(),
shapeRect.y(),
arcLen,
shapeRect.height() * 2 / 3);
# // Starting from 180°, returning to the arc of -90°
path.arcTo(arcRect2, 180.0, -90.0);
path.lineTo(QPointF(arcRect2.x() + shapeRect.width() - 2 * (arcRect2.x() + arcRect2.width()) + arcRect2.width() / 2,
arcRect2.y()));
arcRect3 = QRectF(shapeRect.x() + shapeRect.width() - 2 * arcRect1.width(),
shapeRect.y(),
arcRect1.width(),
shapeRect.height() * 2 / 3);
path.arcTo(arcRect3, 90.0, -90.0);
path.lineTo(QPointF(arcRect3.x() + arcRect3.width(),
arcRect3.y() + arcRect3.height()));
arcRect4 = QRectF(arcRect3.x() + arcRect3.width(),
arcRect3.y() + arcRect3.height() / 2,
arcRect1.width(),
shapeRect.height() * 2 / 3);
path.arcTo(arcRect4, 180.0, 90.0);
path.lineTo(QPointF(arcRect1.x(),
arcRect1.y() + arcRect1.height()));
painter.setPen(Qt.NoPen);
painter.setBrush(Qt.blue);
polygon = path.toFillPolygon();
painter.drawPolygon(polygon);
painter.restore();
elif (tab.state & QStyle.State_MouseOver):
painter.save();
pen = QPen(Qt.black);
pen.setWidthF(0.5);
painter.setPen(pen);
painter.restore();
painter.save();
shapeRect.setX(shapeRect.x() - arcLen);
shapeRect.setWidth(shapeRect.width() + arcLen *3/ 4);
path = QPainterPath()
arcRect1 = QRectF(shapeRect.x(),
shapeRect.y() + shapeRect.height() / 3,
arcLen,
shapeRect.height() * 2 / 3);
path.moveTo(QPointF(arcRect1.x(),
arcRect1.y() + arcRect1.height()));
path.lineTo(QPointF(arcRect1.x() + arcRect1.width() / 2,
arcRect1.y() + arcRect1.height()));
path.arcTo(arcRect1, 270.0, 90.0);
path.lineTo(QPointF(arcRect1.x() + arcRect1.width(),
arcRect1.y()));
arcRect2 = QRectF(shapeRect.x() + arcRect1.width(),
shapeRect.y(),
arcLen,
shapeRect.height() * 2 / 3);
path.arcTo(arcRect2, 180.0, -90.0);
path.lineTo(QPointF(arcRect2.x() + shapeRect.width() - 2 * (arcRect2.x() + arcRect2.width()) + arcRect2.width() / 2,
arcRect2.y()));
arcRect3 = QRectF(shapeRect.x() + shapeRect.width() - 2 * arcRect1.width(),
shapeRect.y(),
arcRect1.width(),
shapeRect.height() * 2 / 3);
path.arcTo(arcRect3, 90.0, -90.0);
path.lineTo(QPointF(arcRect3.x() + arcRect3.width(),
arcRect3.y() + arcRect3.height()));
arcRect4 = QRectF(arcRect3.x() + arcRect3.width(),
arcRect3.y() + arcRect3.height() / 2,
arcRect1.width(),
shapeRect.height() * 2 / 3);
path.arcTo(arcRect4, 180.0, 90.0);
path.lineTo(QPointF(arcRect1.x(),
arcRect1.y() + arcRect1.height()));
painter.setPen(Qt.NoPen);
painter.setBrush(QColor("yellow"));
polygon = path.toFillPolygon();
painter.drawPolygon(polygon);
painter.restore();
else:
painter.save();
shapeRect.setX(shapeRect.x() - arcLen);
shapeRect.setWidth(shapeRect.width() + arcLen / 2);
pen = QPen(Qt.white);
pen.setWidthF(0.5);
painter.setPen(pen);
painter.restore();
else:
super(NewChromeTabStyle, self).drawControl(element, option, painter, widget);
class DeviceTabBar(QTabBar):
def __init__(self):
super().__init__()
self.setStyle(NewChromeTabStyle())
def tabSizeHint(self, index):
newSize = QTabBar().tabSizeHint(index)
width = len(self.tabText(index)) * 20 + 100
newSize.setWidth(width)
newSize.setHeight(40)
return newSize
class DeviceTab(QTabWidget):
def __init__(self, dockWidget, devicesManange): def __init__(self, dockWidget, devicesManange):
super().__init__() super().__init__()
self.dockWidget = dockWidget self.dockWidget = dockWidget
@ -23,6 +229,8 @@ class DeviceWidget(QTabWidget):
def initUI(self): def initUI(self):
# self.tabBar = DeviceTabBar()
self.setTabBar(DeviceTabBar())
#获取DP、PA协议和主从模式 #获取DP、PA协议和主从模式
self.dataTypeAndModel = self.dockWidget.windowTitle() self.dataTypeAndModel = self.dockWidget.windowTitle()
self.proType = self.dataTypeAndModel[0:2] self.proType = self.dataTypeAndModel[0:2]
@ -129,3 +337,5 @@ class DeviceWidget(QTabWidget):

@ -13,7 +13,7 @@ from PyQt5.QtCore import Qt, QTimer, QSize
from PyQt5.QtGui import QIcon, QWindow from PyQt5.QtGui import QIcon, QWindow
from utils.DBModels.BaseModel import * from utils.DBModels.BaseModel import *
from model.ClientModel.Client import Client from model.ClientModel.Client import Client
from UI.DeviceWidget import DeviceWidget from UI.DeviceWidget import DeviceTab
from model.ProjectModel.DeviceManage import DevicesManange from model.ProjectModel.DeviceManage import DevicesManange
@ -78,19 +78,19 @@ class MainWindow(QWidget):
toolbarLayout.setContentsMargins(0, 0, 0, 0) toolbarLayout.setContentsMargins(0, 0, 0, 0)
dpMasterDockWidget = QDockWidget('DP主站') dpMasterDockWidget = QDockWidget('DP主站')
dpMasterDockWidget.setWidget(DeviceWidget(dpMasterDockWidget, self.devicesManange)) dpMasterDockWidget.setWidget(DeviceTab(dpMasterDockWidget, self.devicesManange))
dpMasterDockWidget.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable) # type: ignore dpMasterDockWidget.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable) # type: ignore
dpSlaveDockWidget = QDockWidget('DP从站') dpSlaveDockWidget = QDockWidget('DP从站')
dpSlaveDockWidget.setWidget(DeviceWidget(dpSlaveDockWidget, self.devicesManange)) dpSlaveDockWidget.setWidget(DeviceTab(dpSlaveDockWidget, self.devicesManange))
dpSlaveDockWidget.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable) # type: ignore dpSlaveDockWidget.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable) # type: ignore
paMasterDockWidget = QDockWidget('PA主站') paMasterDockWidget = QDockWidget('PA主站')
paMasterDockWidget.setWidget(DeviceWidget(paMasterDockWidget, self.devicesManange)) paMasterDockWidget.setWidget(DeviceTab(paMasterDockWidget, self.devicesManange))
paMasterDockWidget.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable) # type: ignore paMasterDockWidget.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable) # type: ignore
paSlaveDockWidget = QDockWidget('PA从站') paSlaveDockWidget = QDockWidget('PA从站')
paSlaveDockWidget.setWidget(DeviceWidget(paSlaveDockWidget, self.devicesManange)) paSlaveDockWidget.setWidget(DeviceTab(paSlaveDockWidget, self.devicesManange))
paSlaveDockWidget.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable) # type: ignore paSlaveDockWidget.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable) # type: ignore

@ -8,7 +8,7 @@ import sys
if __name__ == '__main__': if __name__ == '__main__':
app = QApplication(sys.argv) app = QApplication(sys.argv)
app.setStyle(QStyleFactory.create('windowsvista')) app.setStyle(QStyleFactory.create('fusion'))
app.setStyleSheet(CommonHelper.readQss('static/main.qss') + CommonHelper.readQss('static/Area.qss')) app.setStyleSheet(CommonHelper.readQss('static/main.qss') + CommonHelper.readQss('static/Area.qss'))
Client.initDB() Client.initDB()

Loading…
Cancel
Save