Получаю ошибку при запуске программы: TypeError: get_data_plot() missing 1 required positional argument: ‘timespan’. Я так понимаю интерпретатор хочет от меня получить на вход переменную timespan??? Но так не работает
import sys
from PyQt5.QtWidgets import QDialog, QApplication, QPushButton, QVBoxLayout, QHBoxLayout, QLineEdit
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
import matplotlib.pyplot as plt
from datetime import datetime
import requests
class MainWindow(QDialog):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.init_main()
def init_main(self):
self.figure = plt.figure()
self.canvas = FigureCanvas(self.figure)
self.btn_timespan_1_year = QPushButton('1 год')
self.btn_timespan_1_year.clicked.connect(lambda: self.get_data_plot('1year'))
self.btn_timespan_3_years = QPushButton('3 года')
self.btn_timespan_3_years.clicked.connect(lambda: self.get_data_plot('3year'))
self.btn_plot = QPushButton('Построить график')
self.btn_plot.clicked.connect(self.plot)
vertical_layout = QVBoxLayout()
horizontal_layout = QHBoxLayout()
horizontal_layout.addWidget(self.btn_timespan_1_year)
horizontal_layout.addWidget(self.btn_timespan_3_years)
horizontal_layout.addWidget(self.btn_plot)
vertical_layout.addLayout(horizontal_layout)
vertical_layout.addWidget(self.canvas)
self.setLayout(vertical_layout)
def get_data_plot(self, timespan):
url = 'https://api.blockchain.info/charts/market-price'
params = {'timespan': '', 'rollingAverage': '8hours', 'format': 'json'}
params['timespan'] = timespan
response = requests.get(url, params=params)
data = response.json()
return data
def data_plot(self):
data = self.get_data_plot()
x_list = []
y_list = []
for item in data["values"]:
x_list.append(datetime.utcfromtimestamp(item['x']))
y_list.append(item['y'])
return x_list, y_list
def plot(self):
self.figure.clear()
ax = self.figure.add_subplot(111)
plt.title('График рыночной стоимости Bitcoin', fontsize=14, fontweight='bold', color='blue')
plt.xlabel('Период, год', fontsize=12, color='black')
plt.ylabel('Рыночная стоимость, $', fontsize=12, color='black')
ax.grid()
ax.plot(*self.data_plot(), label="Рыночная цена")
ax.legend()
self.canvas.draw()
if __name__ == '__main__':
app = QApplication(sys.argv)
main = MainWindow()
main.resize(1280, 720)
main.show()