LISHUZUOXUN_yangjiang/LSZXPagesManagerLibrary/echarts_pie_table.py

90 lines
3.2 KiB
Python
Raw Normal View History

2024-09-23 14:54:15 +08:00
# coding: gb2312
from PyQt5.QtWidgets import *
from PyQt5.QtChart import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from LSZXPagesManagerLibrary.echarts_pie import PieCircleWidget
class EchartsPieTable:
def __init__(self, columns_num=2, rows_num=4):
super().__init__()
self.rows_num = rows_num
self.columns_num = columns_num
# self.table_list = {
# "categorize": [
# {"keyname": "situp", "name": "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"},
# {"keyname": "runaround", "name": "30*2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"},
# {"keyname": "pullup", "name": "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"},
# {"keyname": "running", "name": "<22><><EFBFBD><EFBFBD>"}
# ],
# "data": {
# "pullup": [17.86, 39.29, 16.07, 26.79, 0],
# "runaround": [12.5, 53.57, 23.21, 10.71, 0],
# "running": [16.07, 64.29, 10.71, 8.93, 0],
# "situp": [25, 39.29, 23.21, 12.5, 0]
# },
# "status": 0
# }
self.table_list = {}
self.scroll_area = self._init_scroll_area_widget()
# <20><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ת<EFBFBD><D7AA>
self.layout = QVBoxLayout()
self.layout.addWidget(self.scroll_area)
self.layout.setContentsMargins(10, 10, 10, 10)
def set_data(self, _data_list):
self.table_list = _data_list
column_num = self.columns_num
row_num = self.rows_num
scroll_widget = QWidget()
realtime_layout = QVBoxLayout(scroll_widget)
scroll_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
row_layout = QHBoxLayout()
count = 0
for item in self.table_list["categorize"]:
# <20><>ʼ<EFBFBD><CABC>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
item_widget = QWidget()
item_widget.setStyleSheet("border: 1px solid #f0f0f0")
item_layout = QVBoxLayout()
label_widget = PieCircleWidget()
item_layout.addWidget(label_widget)
item_widget.setLayout(item_layout)
label_widget.set_data([25, 39.29, 23.21, 12.5, 0], item["name"])
row_layout.addWidget(item_widget)
if (count + 1) % column_num == 0:
realtime_layout.addLayout(row_layout)
row_layout = QHBoxLayout()
count += 1
# <20><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ס<EFBFBD>
if row_layout.count() > 0:
for _ in range(column_num - row_layout.count()):
# <20>հ׿<D5B0>
empty_box = QLabel()
row_layout.addWidget(empty_box)
realtime_layout.addLayout(row_layout)
if realtime_layout.count() < row_num:
for _ in range(row_num - realtime_layout.count()):
# <20>հ׿<D5B0>
empty_box = QLabel()
# <20><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
row_layout = QHBoxLayout()
row_layout.addWidget(empty_box)
realtime_layout.addLayout(row_layout)
self.scroll_area.setWidget(scroll_widget)
def get_layout(self):
return self.layout
@staticmethod
def _init_scroll_area_widget():
scroll_area = QScrollArea()
scroll_area.setWidgetResizable(True)
scroll_area.setStyleSheet(
"border: none;"
)
return scroll_area