Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Центр помощи
  • » Получаю ошибку при запуске программы TypeError: get_data_plot() missing 1 required positional argument: 'timespan' [RSS Feed]

#1 Март 20, 2021 20:56:22

Feelgood
Зарегистрирован: 2016-08-04
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Получаю ошибку при запуске программы TypeError: get_data_plot() missing 1 required positional argument: 'timespan'

Получаю ошибку при запуске программы: 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()

Отредактировано Feelgood (Март 20, 2021 20:56:40)

Офлайн

#2 Март 20, 2021 21:40:07

rami
Зарегистрирован: 2018-01-08
Сообщения: 280
Репутация: +  71  -
Профиль   Отправить e-mail  

Получаю ошибку при запуске программы TypeError: get_data_plot() missing 1 required positional argument: 'timespan'

Исправил в двух функциях:

     def get_data_plot(self, timespan):
        url = 'https://api.blockchain.info/charts/market-price'
        params = {'timespan': timespan, 'rollingAverage': '8hours', 'format': 'json'}  # <—— 'timespan': timespan
#         params['timespan'] = timespan                                                # лишнее
        response = requests.get(url, params=params)
        self.data = response.json()        #данные сохранять в переменной класса
#         return data                      #не надо "впихивать" данные в кнопки
 
    def data_plot(self):
#         data = self.get_data_plot()      #данные есть в self.data                
        x_list = []
        y_list = []
        for item in self.data["values"]:   # <—— self.data["values"]
            x_list.append(datetime.utcfromtimestamp(item['x']))
            y_list.append(item['y'])
        return x_list, y_list


Ещё в самом конце пропущено:
     sys.exit(app.exec_())

Офлайн

  • Начало
  • » Центр помощи
  • » Получаю ошибку при запуске программы TypeError: get_data_plot() missing 1 required positional argument: 'timespan'[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version