#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()
.