在Linux和Windows平台上的wxPython GetBackgroundColour()函数

时间:2018-08-02 07:10:04

标签: windows wxpython ubuntu-16.04

我问了一个similar question before,但不幸的是没有人能够帮助我。

我想在wxPython应用程序中使用面板背景的颜色创建图像。问题是,在Linux上,wxPython函数

self.GetBackgroundColour()

不返回背景的真实颜色(请参见下图)

enter image description here

在Windows上似乎还可以

enter image description here

我尝试了各种(不令人满意的)解决方法,但是现在我正在多个平台上测试该应用程序,这增加了另一个针对特定平台的编码要求。

我对此是否太珍贵?还是我应该期望开箱即用?

用于生成这些图像的代码如下(可以使用任何图像代替“ 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()

0 个答案:

没有答案