Я использую MIDI-модуль pygame для сбора списка доступных устройств ввода MIDI.
Я использую метод внутри специально созданного класса для создания этого списка, например:
def create_devices(self):
pygame.midi.init()
devices = []
device_count = pygame.midi.get_count()
for d in range(device_count):
device = pygame.midi.get_device_info(d)
device_name = device[1].decode()
device_type = device[2]
if device_type == 1:
input_device = MidiDevice(d, device_name)
devices.append(input_device)
return devices
Я устанавливаю список, возвращаемый этим методом, на свойство в моем классе в конструкторе, а позже я визуализирую входные данные на экране как кнопки, предназначенные для выбора.
Я также есть кнопка refre sh, которая при нажатии выполняет эту функцию и устанавливает свойство в моем классе в список, возвращаемый снова.
Проблема, с которой я сталкиваюсь, заключается в том, что даже если я добавляю или удаляю MIDI-входы во время программа запущена, кнопка refre sh всегда возвращает то, что было изначально создано в конструкторе класса.
При перезапуске программы после изменения входных данных отображаются все доступные в настоящее время входы.
Я бы хотел, чтобы кнопка refre sh автоматически находила новые входы, но мне что-то не хватает.
Я новичок в py game и python в целом, поэтому мне не терпится узнать, почему это ведет себя не так, как я ожидал.
Любая помощь приветствуется!