Удалить изображение в wxpython?

#python #wxpython

#python #wxpython

Вопрос:

Я знаю, это звучит просто, но как я могу удалить изображение с помощью wxpython?

Я использую wx.StaticBitmap и wx.Image для создания изображения, но есть ли способ удалить изображение?

Может быть, есть что-то вроде этого:

 bmp1 = wx.Image(filename, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
self.bitmap1 = wx.StaticBitmap(self.sizer, -1, bmp1, (0, 0))
delete_image(self.bitmap1)
delete_image(bmp1)
  

Я попытался заменить переменную, но изображение все еще отображается.

Ответ №1:

self.bitmap1.Скрыть() или self.bitmap1.Уничтожить(). Первый просто скроет его, тогда как второй фактически уничтожит виджет. Вероятно, вы захотите вызвать self .Layout(), чтобы перерисовать ваше окно и обновить макет ваших виджетов.

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

1. Вы знаете, освободит ли этот метод место в памяти компьютера от предыдущих изображений? ПРИМЕР: Показать изображение, удалить изображение, Показать другое изображение, удалить изображение, останутся ли эти изображения в памяти компьютера? (из-за чего программа работает медленнее?)

2. С помощью Destroy() память, занятая изображением, будет освобождена сборщиком мусора Python.

3. @dgraziotin верно, Destroy() освободит память. Hide() скроет только виджет, поэтому он останется в памяти. Это полезно только в том случае, если вы планируете показывать изображение снова и не хотите тратить время на его воссоздание.

4. И хотя это на самом деле не является частью вопроса, если вы хотите скрыть bitmap1 , чтобы показать bitmap2 (загруженный таким же образом), это self.bitmap2.Show() .