Как сохранить значение добавленного списка в цикле for вне цикла for?

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

EXTRAS = []
def add():
    for x in range(1):
        EXTRAS.append(user_input1g.get())
        EXTRAS_int = [float(x) for x in EXTRAS]
        entry_label1g.config(text=str(sum(EXTRAS_int)))
        user_input1g.delete(0, 10)
        


# Entry
user_input1g = tk.Entry(window, width=5)
user_input1g.grid(row=5, column=1)
# Add button
add_button1g = tk.Button(window, text="Add", command=add)
add_button1g.grid(row=5, column=2)
# Empty label
entry_label1g = tk.Label(window, text="")
entry_label1g.grid(row=5, column=4, pady=10)
# $
entry_label2g = tk.Label(window, text="$")
entry_label2g.grid(row=5, column=3, pady=10)
# Description
entry_label3g = tk.Label(window, text="EXTRAS")
entry_label3g.grid(row=5, column=0, pady=10)`

Я попытался

  • print(EXTRAS)outcome = []
  • print(ETRRAS_int) но это не существует вне цикла.
def add():
    for x in range(1):
        EXTRAS.append(user_input1g.get())
        EXTRAS_int = [float(x) for x in EXTRAS]
        entry_label1g.config(text=str(sum(EXTRAS_int)))
        user_input1g.delete(0, 10)
        EXTRAS_SUM = sum(EXTRAS_int)

print(EXTRAS_SUM) but that doesnt work either.

Справедливое спасибо за документ, я не знал, что это вещь. у меня есть около 7 списков, где пользователь может добавить свои расходы. Я хочу показать общую сумму всех списков расходов, сложенных вместе. Тогда у меня есть один список для их доходов. Я хочу вычесть сумму всех расходов из списка доходов.

TAC 20.11.2022 11:06

Да, у каждого списка есть своя кнопка, и да, это то, что я хочу. Извините за формулировку вопроса, я все еще очень новичок во всем этом.

TAC 20.11.2022 11:14

Это делает это хрестоматийным определением проблемы XY. Опубликуйте фактический код для своей программы или создайте минимальный воспроизводимый пример, если ни один из ответов до сих пор не помог вам

Alexander 20.11.2022 11:16

Хорошо, я еще раз подумаю

TAC 20.11.2022 11:35

Какой смысл использовать цикл for, если цикл for имеет только одну итерацию?

acw1668 20.11.2022 16:09

Ну видимо ничего. если бы я просто пытался что-то придумать, я научился в учебниках, чтобы сделать что-то для себя

TAC 21.11.2022 06:16
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
Python PyPDF2 - запись метаданных PDF
Python PyPDF2 - запись метаданных PDF
Python скрипт, который будет записывать метаданные в PDF файл, для этого мы будем использовать PDF ридер из библиотеки PyPDF2 . PyPDF2 - это...
Переменные, типы данных и операторы в Python
Переменные, типы данных и операторы в Python
В Python переменные используются как место для хранения значений. Пример переменной формы:
Почему Python - идеальный выбор для проекта AI и ML
Почему Python - идеальный выбор для проекта AI и ML
Блог, которым поделился Harikrishna Kundariya в нашем сообществе Developer Nation Community.
Как автоматически добавлять котировки в заголовки запросов с помощью PyCharm
Как автоматически добавлять котировки в заголовки запросов с помощью PyCharm
Как автоматически добавлять котировки в заголовки запросов с помощью PyCharm
Анализ продукта магазина на Tokopedia
Анализ продукта магазина на Tokopedia
Tokopedia - это место, где продавцы могут продавать свои товары. Товар должен быть размещен на витрине, чтобы покупателям было легче найти товар...
0
6
66
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

    import tkinter as tk
from tkinter import *

window = Tk()

window.title("Test Window")
window.geometry('300x300')

EXTRAS = []

def add():
    for x in range(1):
        EXTRAS.append(float(user_input1g.get()))
        entry_label1g.config(text=str(sum(EXTRAS)))
        user_input1g.delete(0, 10)
        


# Entry
user_input1g = tk.Entry(window, width=5)
user_input1g.grid(row=5, column=1)
# Add button
add_button1g = tk.Button(window, text="Add", command=add)
add_button1g.grid(row=5, column=2)
# Empty label
entry_label1g = tk.Label(window, text="")
entry_label1g.grid(row=5, column=4, pady=10)
# $
entry_label2g = tk.Label(window, text="$")
entry_label2g.grid(row=5, column=3, pady=10)
# Description
entry_label3g = tk.Label(window, text="EXTRAS")
entry_label3g.grid(row=5, column=0, pady=10)

window.mainloop()
print(EXTRAS)

Это также не дает мне значение списка. вне цикла for

TAC 20.11.2022 11:10

вы можете использовать функции, начинающиеся с ключевого слова global. В этом случае он ссылается на значение use EXTRAS и EXTRAS_int, поэтому он изменяет их значения также вне функции.

Это выглядит следующим образом:

def add():
    global EXTRAS_int
    global EXTRAS
    for x in range(1):
        EXTRAS.append(user_input1g.get())
        EXTRAS_int = [float(x) for x in EXTRAS]
        entry_label1g.config(text=str(sum(EXTRAS_int)))
        user_input1g.delete(0, 10)

Попробуйте вызвать другую функцию, которая печатает ваши списки, она должна печатать обновленные значения. Удачи :)

Ответ принят как подходящий
import tkinter as tk
from tkinter import *

window = Tk()

window.title("Test Window")
window.geometry('300x300')

EXTRAS = []
EXTRAS_SUM = 0

def add():
    global EXTRAS_SUM
    EXTRAS.append(float(user_input1g.get()))   
    entry_label1g.config(text=str(sum(EXTRAS)))
    user_input1g.delete(0, 10)
    EXTRAS_SUM = sum(EXTRAS)


# Entry
user_input1g = tk.Entry(window, width=5)
user_input1g.grid(row=5, column=1)
# Add button
add_button1g = tk.Button(window, text="Add", command=add)
add_button1g.grid(row=5, column=2)
# Empty label
entry_label1g = tk.Label(window, text="")
entry_label1g.grid(row=5, column=4, pady=10)
# $
entry_label2g = tk.Label(window, text="$")
entry_label2g.grid(row=5, column=3, pady=10)
# Description
entry_label3g = tk.Label(window, text="EXTRAS")
entry_label3g.grid(row=5, column=0, pady=10)

window.mainloop()
print(EXTRAS)       #output: [12.0, 2.0, 5.5]
print(EXTRAS_SUM)   #output: 19.5

Для лучшего ответа вам нужно объяснить, что вы изменили, чтобы решить проблему OP.

acw1668 21.11.2022 02:43

Другие вопросы по теме