半成品,谢谢。
"""
Created on Mon Aug 10 20:46:22 2020
@author: 19749
"""
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import numpy as np
import matplotlib
matplotlib.use("Qt5Agg")
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
import math
dict_1 = {'GDP现价': 'M5567876',
'第一产业': 'M5567877',
'第二产业': 'M5567878',
'第三产业': 'M5567879'}
dict_0 = {'国内生产总值': dict_1}
list_add = {}
class MyFigure(FigureCanvas):
def __init__(self,width=5, height=4, dpi=100):
super(MyFigure,self).__init__(self.fig)
self.fig = Figure(figsize=(width, height), dpi=dpi)
self.axes = self.fig.add_subplot(111)
class window(QWidget):
def __init__(self):
super(window,self).__init__()
self.resize(1000,800)
self.setWindowTitle("宏观经济指标")
self.hlt1 = QHBoxLayout(self)
self.tree1 = QTreeWidget()
self.hlt1.addWidget(self.tree1)
self.tree1.setMaximumWidth(300)
self.tree1.setColumnCount(2)
self.tree1.setMinimumWidth(300)
self.tree1.setColumnWidth(0,200)
self.root=QTreeWidgetItem(self.tree1)
self.root.setText(0,"宏观经济指标")
for i in dict_0.keys():
child1 = QTreeWidgetItem(self.root)
child1.setText(0,i)
for j in dict_0[i]:
self.child2 = QTreeWidgetItem(child1)
self.child2.setText(0,j)
self.child2.setText(1,dict_0[i][j])
self.child2.setCheckState(0, not Qt.CheckState)
self.tree1.expandAll()
self.tree1.itemChanged.connect(self.onclick)
self.vlt1 = QVBoxLayout(self)
self.hlt1.addLayout(self.vlt1)
self.hlt2 = QHBoxLayout(self)
self.vlt1.addLayout(self.hlt2)
self.gbx = QGroupBox(self)
self.vlt1.addWidget(self.gbx)
self.gridlayout = QGridLayout(self.gbx)
self.btn1 = QPushButton(self)
self.hlt2.addWidget(self.btn1)
self.btn1.setText('选择')
self.btn1.clicked.connect(self.add)
self.tree2 = QTreeWidget()
self.hlt2.addWidget(self.tree2)
self.tree2.setMaximumHeight(250)
self.tree2.setMinimumWidth(200)
self.tree2.setMaximumWidth(400)
self.cal1 = QCalendarWidget(self)
self.hlt2.addWidget(self.cal1)
self.cal1.setMaximumHeight(250)
self.cal1.clicked.connect(self.showDate)
self.cal2 = QCalendarWidget(self)
self.hlt2.addWidget(self.cal2)
self.cal2.setMaximumHeight(250)
self.cal1.clicked.connect(self.showDate)
self.vlt2 = QVBoxLayout(self)
self.hlt2.addLayout(self.vlt2)
self.cbx1 = QCheckBox(self)
self.vlt2.addWidget(self.cbx1)
self.cbx1.setText('叠加')
self.cbx2 = QCheckBox(self)
self.vlt2.addWidget(self.cbx2)
self.cbx2.setText('批量')
self.btn2 = QPushButton(self)
self.vlt2.addWidget(self.btn2)
self.btn2.setText('确认')
self.btn2.clicked.connect(self.getData)
self.btn2.clicked.connect(self.plotFig)
self.btn3 = QPushButton(self)
self.vlt2.addWidget(self.btn3)
self.btn3.setText('输出数据')
self.btn4 = QPushButton(self)
self.vlt2.addWidget(self.btn4)
self.btn4.setText('输出图表')
def onclick(self,item,cloumn):
global list_add
if item.checkState(cloumn) == Qt.Checked:
print("checked", item.text(0),item.text(1))
list_add[item.text(0)]=item.text(1)
if item.checkState(cloumn) == Qt.Unchecked:
del list_add[item.text(0)]
print("unchecked", item.text(0))
print(list_add)
def add(self):
global list_add
self.tree2.clear()
self.tree2.setColumnCount(1)
for i in list_add:
child1 = QTreeWidgetItem(self.tree2)
child1.setText(0, i)
self.tree2.expandAll()
print(list_add)
def showDate(self):
global list_date
a = self.cal1.selectedDate().toString('yyyy-MM-dd dddd')
b = self.cal2.selectedDate().toString('yyyy-MM-dd dddd')
self.btn2.setText('确认\n起始日期:'+a+'\n结束日期:'+b)
list_date = [self.cal1.selectedDate().toString('yyyy-MM-dd'),
self.cal2.selectedDate().toString('yyyy-MM-dd')]
print(list_date)
def getData(self):
global list_name, list_code, list_date
list_name = []
list_code = []
for key in list_add:
list_code.append(list_add[key])
list_name.append(key)
code = ','.join(list_code)
print([code],list_name)
def plotFig(self):
if self.cbx1.isChecked() == True:
print('11')
else:
pass
if self.cbx2.isChecked() == True:
print('21')
else:
pass
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
win = window()
win.show()
sys.exit(app.exec_())