Как можно создавать переменные в произвольном количестве?

Как создать окно с возможностью выбора неопределенного количества файлов с компьютера, где для каждого файла будет создаваться фрейм с названием файла и кнопкой для его выбора, после чего название файла должно измениться? Как решить эту задачу с помощью генератора, учитывая неизвестное заранее количество файлов и необходимость обработки созданных фреймов?
  • 29 февраля 2024 г. 13:18
Ответы на вопрос 2
Для создания переменных в произвольном количестве можно использовать словарь или список. Например, словарь, в котором ключами будут являться названия файлов, а значениями - сами файлы. Таким образом, каждый раз при выборе нового файла можно добавить его в словарь.

Чтобы создать окно с возможностью выбора неопределенного количества файлов с компьютера, можно воспользоваться библиотекой tkinter в Python. При выборе каждого файла можно создавать новый фрейм с названием файла и кнопкой для его выбора. 

Для решения этой задачи с помощью генератора, можно использовать функцию-генератор, которая будет создавать новые фреймы с файлами. Например:

```python
import tkinter as tk
from tkinter import filedialog

root = tk.Tk()

def file_generator():
    while True:
        file_path = filedialog.askopenfilename()
        if not file_path:
            break
        yield file_path

for file_path in file_generator():
    frame = tk.Frame(root)
    frame.pack()
    
    label = tk.Label(frame, text=file_path)
    label.pack()
    
    button = tk.Button(frame, text="Выбрать файл", command=lambda fp=file_path: print(f"Файл {fp} выбран."))
    button.pack()

root.mainloop()
```

Этот код будет создавать новые фреймы и кнопки для каждого выбранного файла. Каждый раз при выборе нового файла будет создаваться новый фрейм с его названием и кнопкой для выбора файла.
Простой вариант - складывай нужные объекты в список. Если что, можно сделать список кортежей. 
Чуть более сложный вариант - опиши класс, описывающий пару кнопка-label, и реализующий логику выбора файла, и складывай в список экземпляры этого класса.
Похожие вопросы