Тебе нужно сначала подготовить все данные, а уже потом их выводить в метки.
Тебе нужно сначала подготовить все данные, а уже потом их передавать в .format().
Тебе нужно сначала подготовить все данные, а уже потом их передавать в формулу вычисления.
Вот этого всего у тебя нет, поэтому у тебя получилась каша-малаша-параша. Вот её ты не можешь укоротить. А секрет в том, что её не надо делать изначально.
Вот пример
Lxter
self.label_21.setText(year2 := list(data)[9]) #2020
Это не умная строчка, а, наоборот, тупая строчка. Ты повкладывал всё что возможно во всё что возможно и теперь сидишь с этим нагромождением и не знаешь, что с ним делать; а с ним ничего сделать нельзя.
Вот пример преобразования
Было
self.label_20.setText(year1 := list(data)[10]) # 2021
self.label_21.setText(year2 := list(data)[9]) #2020
self.label_22.setText(year3 := list(data)[8]) #2019
self.label_23.setText(year4 := list(data)[7]) #2018
self.label_24.setText(year5 := list(data)[6]) #2017
Стало
data_list = list(data)
years = data_list[10:5:-1]
labels = (
self.label_20,
self.label_21,
self.label_22,
self.label_23,
self.label_24
)
for label, year in zip(labels, years):
label.setText(year)
После этого этот фрагмент можно оформить в виде метода
def set_labels_for_years(self, data):
data_list = list(data)
years = data_list[10:5:-1]
labels = (
self.label_20,
self.label_21,
self.label_22,
self.label_23,
self.label_24
)
for label, year in zip(labels, years):
label.setText(year)
Затем этот метод в виде шаблона используешь для построения других методов.
Метод для текущей ликвидности (сделан из метода для лет)
def set_labels_for_current_liquidity(self, data):
data_list = list(data)
years = data_list[10:5:-1]
labels = (
self.label_26,
self.label_27,
self.label_28,
self.label_29,
self.label_30
)
def get_coefficient(data, year):
out = (data[year]['values']['1200']
/ data[year]['values']['1500'])
return out
def format_coefficient(value):
return '{:.2f}'.format(value)
for label, year in zip(labels, years):
coefficient = get_coefficient(data, year)
coefficient_formatted = format_coefficient(coefficient)
label.setText(coefficient_formatted)
Метод для абсолютной ликвидности (сделан из метода для текущей ликвидности, который сделан из метода для лет)
def set_labels_for_absolute_liquidity(self, data):
data_list = list(data)
years = data_list[10:5:-1]
labels = (
self.label_32,
self.label_33,
self.label_34,
self.label_35,
self.label_36
)
def get_coefficient(data, year):
out = (data[year]['values']['1250']
/ data[year]['values']['1500'])
return out
def format_coefficient(value):
return '{:.2f}'.format(value)
for label, year in zip(labels, years):
coefficient = get_coefficient(data, year)
coefficient_formatted = format_coefficient(coefficient)
label.setText(coefficient_formatted)
Проблема обычно не в том, что кода много (много кода - это нормально), а в том, что много кода при неправильной организации этого кода становится непонятной массой, с которой ничего нельзя делать, так как эта куча связана внутри себя вдоль и поперёк. Одно тронешь - другое сломается. И так по всему коду.