Tkinter теперь позволяет мне печатать все данные, которые я хотел бы

#python #tkinter

Вопрос:

я бы хотел, чтобы он печатал все планеты в классе, как это происходит, когда я печатаю его, но он печатает только последнюю, я попробовал несколько вещей, но ни одна из них не сработала, я бы хотел, чтобы он печатал каждую планету под другой

 def infomation(day_count, planets):
    Day.config(text=day_count)
    for planet in planets:
        Infomation.config(text='{:<8} posision (m)  x ={:6.2f}  y ={:6.2f} velocity (m/s)  x ={:9.2f}  y = {:9.2f} '.format(
                planet.planet_name, planet.pos_x/AU, planet.pos_y/AU, planet.velocity_x, planet.velocity_y))
 

Ответ №1:

Используйте список для хранения отформатированной строки для каждой планеты, а затем соедините эти строки и отобразите объединенную строку в Infomation :

 def infomation(day_count, planets):
    Day.config(text=day_count)
    txt = []
    for planet in planets:
        txt.append('{:<8} posision (m)  x ={:6.2f}  y ={:6.2f} velocity (m/s)  x ={:9.2f}  y = {:9.2f} '.format(
                planet.planet_name, planet.pos_x/AU, planet.pos_y/AU, planet.velocity_x, planet.velocity_y))
    Infomation.config(text='n'.join(txt))
 

Комментарии:

1. Я бы сказал, что для такой довольно сложной строки, как эта, использование f strings было бы намного лучшим подходом