diff --git a/.idea/WeChatMsg.iml b/.idea/WeChatMsg.iml
index ec63674..aad402c 100644
--- a/.idea/WeChatMsg.iml
+++ b/.idea/WeChatMsg.iml
@@ -4,4 +4,7 @@
+
+
+
\ No newline at end of file
diff --git a/app/Ui/contact/analysis/analysis.py b/app/Ui/contact/analysis/analysis.py
index 3fd4f5d..b8c6dad 100644
--- a/app/Ui/contact/analysis/analysis.py
+++ b/app/Ui/contact/analysis/analysis.py
@@ -13,8 +13,9 @@ class AnalysisController(QWidget):
def __init__(self, username, parent=None):
super().__init__(parent)
self.ta_username = username
- self.setWindowTitle('数据分析')
- self.setWindowIcon(QIcon('./app/data/icon.png'))
+ # self.setWindowTitle('数据分析')
+ # self.setWindowIcon(QIcon('./app/data/icon.png'))
+
# self.setWindowFlag(Qt.FramelessWindowHint)
self.setStyleSheet('''QWidget{background-color:rgb(255, 255, 255);}''')
# self.setBackground()
@@ -37,7 +38,8 @@ class AnalysisController(QWidget):
def label_01(self):
self.label = QLabel(self)
- self.label.setGeometry(150, 100, 100, 100)
+ size = self.geometry()
+ self.label.setGeometry(size.width() // 2, self.height() // 2, 100, 100)
self.label.setToolTip("这是一个标签")
self.m_movie()
@@ -49,29 +51,19 @@ class AnalysisController(QWidget):
def initUI(self):
self.label.setVisible(False)
self.setStyleSheet('''QWidget{background-color:rgb(244, 244, 244);}''')
- main_box = QHBoxLayout(self)
+
+ main_box = QVBoxLayout(self)
+
self.browser1 = QWebEngineView()
self.browser1.load(QUrl('file:///data/聊天统计/title.html'))
- # self.browser1 = QFrame(self)
- # self.browser1.setFrameShape(QFrame.StyledPanel)
- # self.layoutWidget = QtWidgets.QWidget(self.browser1)
- # # self.layoutWidget.setGeometry(QtCore.QRect(71, 63, 227, 155))
- # self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget)
- # self.verticalLayout.setContentsMargins(0, 0, 0, 0)
- # self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
- # self.label_2 = QtWidgets.QLabel(self.layoutWidget)
- # _translate = QtCore.QCoreApplication.translate
- # conRemark = data.get_conRemark(self.ta_username)
- # self.label_2.setText(_translate("Dialog", f"{conRemark}"))
- # self.horizontalLayout_2.addWidget(self.label_2)
- # self.browser1.setLayout(self.horizontalLayout_2)
-
self.browser2 = QWebEngineView()
self.browser2.load(QUrl('file:///data/聊天统计/wordcloud.html'))
self.browser3 = QWebEngineView()
self.browser3.load(QUrl('file:///data/聊天统计/time.html'))
+
self.browser4 = QWebEngineView()
self.browser4.load(QUrl('http://www.baidu.com'))
+ # self.browser4.resize(800, 600)
self.browser5 = QWebEngineView()
self.browser5.load(QUrl('file:///data/聊天统计/chat_session.html'))
self.browser6 = QWebEngineView()
@@ -85,6 +77,42 @@ class AnalysisController(QWidget):
self.browser10 = QWebEngineView()
self.browser10.load(QUrl('file:///data/聊天统计/send_recv_rate.html'))
+ main_box.addWidget(self.browser1)
+
+ scrollArea = QScrollArea(self)
+ scrollAreaContent = QWidget(scrollArea)
+ Vlayout2 = QVBoxLayout(scrollAreaContent)
+
+ splitter2 = QSplitter(Qt.Vertical)
+ splitter2.addWidget(self.browser2)
+ Vlayout2.addWidget(splitter2)
+
+ splitter3 = QSplitter(Qt.Vertical)
+ splitter3.addWidget(self.browser3)
+ Vlayout2.addWidget(splitter3)
+
+ splitter4 = QSplitter(Qt.Vertical)
+ splitter4.addWidget(self.browser4)
+ Vlayout2.addWidget(splitter4)
+
+ splitter5 = QSplitter(Qt.Vertical)
+ splitter5.addWidget(self.browser6)
+ Vlayout2.addWidget(splitter5)
+
+ Vlayout2.addWidget(self.browser3)
+ Vlayout2.addWidget(self.browser6)
+ Vlayout2.addWidget(self.browser5)
+ Vlayout2.addWidget(self.browser7)
+ Vlayout2.addWidget(self.browser8)
+ Vlayout2.addWidget(self.browser9)
+ Vlayout2.addWidget(self.browser10)
+
+ scrollAreaContent.setLayout(Vlayout2)
+ scrollArea.setWidget(scrollAreaContent)
+ main_box.addWidget(scrollArea)
+ main_box.setStretch(0, 1)
+ main_box.setStretch(1, 10)
+ '''
splitter1 = QSplitter(Qt.Vertical)
splitter2 = QSplitter(Qt.Horizontal)
splitter3 = QSplitter(Qt.Horizontal)
@@ -97,7 +125,7 @@ class AnalysisController(QWidget):
splitter1.addWidget(self.browser1)
splitter1.addWidget(splitter2)
- splitter1.setSizes([1, 8])
+ splitter1.setSizes([1, 13])
splitter2.addWidget(splitter6)
splitter2.addWidget(splitter3)
@@ -109,7 +137,7 @@ class AnalysisController(QWidget):
splitter4.addWidget(splitter5)
splitter4.addWidget(self.browser2)
- splitter4.setSizes([1, 5])
+ splitter4.setSizes([2, 13])
splitter5.addWidget(self.browser3)
# splitter5.addWidget(self.browser4)
@@ -127,9 +155,10 @@ class AnalysisController(QWidget):
splitter9.addWidget(self.browser9)
splitter9.addWidget(self.browser10)
-
- main_box.addWidget(splitter1)
+'''
+ # main_box.addWidget(splitter1)
self.setLayout(main_box)
+ # self.setLayout(Vlayout1)
def setBackground(self):
palette = QPalette()
diff --git a/app/Ui/contact/analysis/charts.py b/app/Ui/contact/analysis/charts.py
index 805aee9..fd69571 100644
--- a/app/Ui/contact/analysis/charts.py
+++ b/app/Ui/contact/analysis/charts.py
@@ -32,6 +32,10 @@ Type = {
'436207665': '发红包',
'49': '分享链接'
}
+charts_width = 700
+charts_height = 600
+wordcloud_width = 700
+wordcloud_height = 600
def send_recv_rate(username):
@@ -40,7 +44,7 @@ def send_recv_rate(username):
total_num = send_num + recv_num
print(send_num, recv_num)
c = (
- Pie(init_opts=opts.InitOpts(width="463px", height="243px"))
+ Pie(init_opts=opts.InitOpts(width=f"{charts_width}px", height=f"{charts_height}px"))
.add(
"",
[
@@ -74,7 +78,7 @@ def msg_type_rate(username):
new_data.append(('其他', data2))
c = (
- Pie(init_opts=opts.InitOpts(width="460px", height="240px"))
+ Pie(init_opts=opts.InitOpts(width=f"{charts_width}px", height=f"{charts_height}px"))
.add(
"",
new_data
@@ -110,7 +114,7 @@ def message_word_cloud(username):
text_data = text_data[:100]
# print(text_data)
(
- WordCloud(init_opts=opts.InitOpts(width="900px", height="700px"))
+ WordCloud(init_opts=opts.InitOpts(width=f"{wordcloud_width}px", height=f"{wordcloud_height}px"))
.add(series_name="聊天文字", data_pair=text_data, word_size_range=[20, 100])
.set_global_opts(
title_opts=opts.TitleOpts(
@@ -126,10 +130,12 @@ def message_word_cloud(username):
def calendar_chart(username):
msg_data = data.get_msg_by_days(username, year='2022')
+ if not msg_data:
+ return False
min_ = min(map(lambda x: x[1], msg_data))
max_ = max(map(lambda x: x[1], msg_data))
c = (
- Calendar(init_opts=opts.InitOpts(width="460px", height="270px"))
+ Calendar(init_opts=opts.InitOpts(width=f"{charts_width}px", height=f"{charts_height}px"))
.add(
"",
msg_data,
@@ -160,11 +166,11 @@ def month_num(username):
y_data = list(map(lambda x: x[1], msg_data))
x_axis = list(map(lambda x: x[0], msg_data))
c = (
- Bar(init_opts=opts.InitOpts(width="440px", height="265px"))
+ Bar(init_opts=opts.InitOpts(width=f"{charts_width}px", height=f"{charts_height}px"))
.add_xaxis(x_axis)
.add_yaxis("消息数量", y_data)
.set_global_opts(
- title_opts=opts.TitleOpts(title="逐月聊天统计", subtitle=None),
+ title_opts=opts.TitleOpts(title="逐月统计", subtitle=None),
datazoom_opts=opts.DataZoomOpts(),
toolbox_opts=opts.ToolboxOpts(),
)
@@ -180,7 +186,7 @@ def chat_session(username):
# print(y_data)
# max_ = max(y_data)
c = (
- Line(init_opts=opts.InitOpts(width="460px", height="270px"))
+ Line(init_opts=opts.InitOpts(width=f"{charts_width}px", height=f"{charts_height}px"))
.add_xaxis(xaxis_data=x_axis)
.add_yaxis(
series_name="聊天频率",
@@ -236,12 +242,12 @@ def sport(username):
continue
df = pd.DataFrame({'ranks': ranks, 'score': steps, 'date': date}, index=date)
months = pd.date_range(date[0], date[-1], freq='M')
- tl = Timeline(init_opts=opts.InitOpts(width="440px", height="265px"))
+ tl = Timeline(init_opts=opts.InitOpts(width=f"{charts_width}px", height=f"{charts_height}px"))
tl.add_schema(is_auto_play=True)
for i in range(len(months) - 1):
da = df[(months[i + 1].strftime("%Y-%m-%d") >= df['date']) & (df['date'] > months[i].strftime("%Y-%m-%d"))]
bar = (
- Bar(init_opts=opts.InitOpts(width="440px", height="265px"))
+ Bar(init_opts=opts.InitOpts(width=f"{charts_width}px", height=f"{charts_height}px"))
.add_xaxis(list(da['date']))
.add_yaxis(
"步数",
@@ -284,7 +290,10 @@ def sport(username):
)
)
.set_global_opts(
- title_opts=opts.TitleOpts(title="{}月".format(months[i + 1].strftime("%Y-%m"))),
+ title_opts=opts.TitleOpts(
+ title="{}".format(months[i + 1].strftime("%Y-%m")),
+
+ ),
# legend_opts=opts.LegendOpts(is_show=False),
yaxis_opts=opts.AxisOpts(is_inverse=True),
# xaxis_opts=opts.AxisOpts(type_='time')
@@ -297,7 +306,7 @@ def sport(username):
)
# init_opts = opts.InitOpts(width="400px", height="235px")
line = (
- Line(init_opts=opts.InitOpts(width="440px", height="265px"))
+ Line(init_opts=opts.InitOpts(width=f"{charts_width}px", height=f"{charts_height}px"))
.add_xaxis(list(da['date']))
.add_yaxis(
"排名",
@@ -319,7 +328,7 @@ def sport(username):
)
bar.overlap(line)
grid = Grid()
- grid.add(bar, opts.GridOpts(pos_left="7%", pos_right="11%"), is_control_axis_index=True)
+ grid.add(bar, opts.GridOpts(pos_left="5%", pos_right="11%"), is_control_axis_index=True)
# grid.render("grid_multi_yaxis.html")
tl.add(grid, "{}".format(months[i].strftime("%Y-%m")))
tl.render("./data/聊天统计/sports.html")
@@ -349,8 +358,8 @@ def chat_start_endTime(username):