wxPython getbackgroundcolor()函数在linux和windows平台上的工作方式不同

wxPython getbackgroundcolor()函数在linux和windows平台上的工作方式不同,windows,image-processing,wxpython,ubuntu-16.04,Windows,Image Processing,Wxpython,Ubuntu 16.04,我想在wx Python应用程序中创建一个背景颜色的图像 [编辑]在Windows上,此操作非常有效: [/编辑] 但在linux上,我的代码颜色更浅。我做错了什么 [编辑:更多信息] getBackgroundColor()返回的颜色是(225225225);较淡的颜色。实际背景颜色为(212、212、212) [\EDIT] 以下是使用不同主题拍摄的图像: 因此,根据罗尔夫下面的回答,这似乎是一个与Mate有关的问题,而不是主题 import wx class MainFrame(w

我想在wx Python应用程序中创建一个背景颜色的图像

[编辑]在Windows上,此操作非常有效:

[/编辑]

但在linux上,我的代码颜色更浅。我做错了什么

[编辑:更多信息]

getBackgroundColor()返回的颜色是(225225225);较淡的颜色。实际背景颜色为(212、212、212)

[\EDIT]

以下是使用不同主题拍摄的图像:

因此,根据罗尔夫下面的回答,这似乎是一个与Mate有关的问题,而不是主题

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

任何图像都可以用来代替任何.png

这只是为了备份我的原始评论。
我只能假设你的问题与你的主题或盒子上的其他设置有关,尽管我当然保留大错特错的权利。
这段代码在Mint19(Ubuntu18.04)Python3.6WX4.0.3GTK2上

import wx

class MainFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, 'Image')
        sizer = wx.BoxSizer()

        sys_background = wx.SystemSettings.GetColour(wx.SYS_COLOUR_BACKGROUND)
        print("default colour ", sys_background)

        static_bitmap_A = wx.StaticBitmap(self, wx.ID_ANY)
        bitmap = wx.Bitmap('/home/rolf/any2.png')
        static_bitmap_A.SetBitmap(bitmap)
        sizer.Add(static_bitmap_A, flag=wx.ALL, border=10)

        image = wx.Image('/home/rolf/any2.png')
        #colour = self.GetBackgroundColour()
        colour = sys_background
        red, green, blue = colour[0], colour[1], colour[2]
        print(red, green, blue)
        for row in range(image.GetSize()[0]):# -1 ):
            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,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()
输出(主题Mint-X):

当更改主题时,这将继续正常工作,只需为颜色值输出不同的数字

主题薄荷糖

default colour  (240, 240, 240, 255)
240 240 240


无论是使用
color=self.getbackgroundcolor()
还是
color=sys\u background

都可以工作,因为您提供的是经过处理的图像,而不是实际的图像。是的。我称之为“任何”。png'因为任何图像都会出现问题,请使用
wx.SystemSettings.getcolor(wx.SYS\u color\u BACKGROUND)
检查实际颜色,谢谢。下次度假回来时我会试试的week@Rolfgetcolor(wx.SYS_color_BACKGROUND)给出了(225,225,225)的颜色,这是较淡的颜色,而不是面板颜色。谢谢我使用的是Ubuntu Mate 16.04。看起来是Mate(?)的问题,而不是主题。请参阅我对问题的更新
default colour  (240, 240, 240, 255)
240 240 240