Я попросил аналогичный вопрос перед, но, к сожалению, никто не смог мне помочь.
Я хочу создать изображение в приложении wxPython с цветом фона панели. Проблема в том, что в Linux функция wxPython
self.GetBackgroundColour()
не возвращает истинный цвет фона (см. изображение ниже)
тогда как в Windows вроде нормально
Я пробовал различные (неудовлетворительные) обходные пути, но теперь, когда я тестирую приложение на нескольких платформах, оно добавляет еще одно требование кодирования для конкретной платформы.
Неужели я слишком дорожу этим? Или я должен ожидать, что это будет работать из коробки?
Код, используемый для создания этих изображений, следующий (любое изображение можно использовать вместо any.png):
import wx
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Image')
sizer = wx.BoxSizer()
static_bitmap_A = wx.StaticBitmap(self, wx.ID_ANY)
bitmap = wx.Bitmap('any.png')
static_bitmap_A.SetBitmap(bitmap)
sizer.Add(static_bitmap_A, flag=wx.ALL, border=10)
image = wx.Image('any.png')
colour = self.GetBackgroundColour()
red, green, blue = colour[0], colour[1], colour[2]
#red, green, blue = 0, 0, 0
for row in range(image.GetSize()[0]):
for column in range(image.GetSize()[1]):
image.SetRGB(row, column, red, green, blue)
bitmap = wx.Bitmap(image)
static_bitmap_B = wx.StaticBitmap(self, wx.ID_ANY)
static_bitmap_B.SetBitmap(bitmap)
sizer.Add(static_bitmap_B, flag=wx.ALL, border=10)
self.SetSizerAndFit(sizer)
self.Show()
if __name__ == '__main__':
screen_app = wx.App()
main_frame = MainFrame()
screen_app.MainLoop()
Согласен, проблема та же. Я предоставил новую информацию, показав разницу между Windows и Linux, и я мог бы эффективно сделать это в комментарии. Поскольку раньше ответа не было, этот новый аспект может вызвать конструктивный ответ.
Вместо того, чтобы снова задавать тот же вопрос, редактировать ваш предыдущий вопрос.





Этот вопрос "похожий" - тот же вопрос, если я что-то не упускаю.