wxPython SetBackgroundColour не работает на OS X - PullRequest
0 голосов
/ 13 августа 2010

Мне давно не приходилось программировать на GUI, поэтому я могу быть тупым, поэтому, пожалуйста, потерпите меня, если это глупый вопрос.Я решил использовать wxPython для небольшого хобби-проекта, и у меня возникли проблемы при изменении цвета фона главного окна.Я использую Python 2.6.2 и wxPython 2.8.11.0 на Snow Leopard.Может кто-нибудь сказать мне, что я здесь делаю не так?Или я наткнулся на какую-то ошибку?Вот небольшой пример, который демонстрирует проблему ...

from wx import * 

class MainFrame(Frame):
    def __init__(self, parent, title):
        Frame.__init__(self, parent, title=title)

        self.Maximize()
        self.cdatabase = ColourDatabase()
        self.SetBackgroundStyle(BG_STYLE_CUSTOM)
        self.SetOwnBackgroundColour(self.cdatabase.Find('BLACK'))
        self.Show(True)
        self.ClearBackground()


app = App(False)
frame = MainFrame(None, 'a title')
app.MainLoop()

Ответы [ 2 ]

1 голос
/ 13 августа 2010

Что следует помнить с wxPython, так это то, что он по большей части оборачивает нативные виджеты платформы, на которой он находится.Поэтому, если фрейм в Linux не поддерживает изменение цвета фона, вы не сможете сделать это только с фреймом.(Примечание: я не знаю, на каких платформах wx.Frame поддерживает изменение цвета bg)

Панель wx.Panel всегда должна быть включена для единообразного внешнего вида, а также для правильной работы вкладок для дочерних виджетов.Если вы хотите иметь возможность полностью контролировать каждый аспект вашего приложения, вам необходимо использовать другой инструментарий.Кстати, многие из основных элементов управления в wxPython имеют общие аналоги, написанные на чистом python, и их можно взломать, чтобы сделать то, чего не могут родные виджеты.

1 голос
/ 13 августа 2010

Ваш вызов на self.SetBackgroundStyle(BG_STYLE_CUSTOM), кажется, вызывает проблемы в моей системе, а также вам вообще не нужна линия для self.cdatabase = ColourDatabase() в моих тестах. Этот код работает на моей стороне вещей:

from wx import * 

class MainFrame(Frame):
    def __init__(self, parent, title):
        Frame.__init__(self, parent, title=title)
        self.Maximize()
        self.SetOwnBackgroundColour('Black')
        self.Show(True)


app = App(False)
frame = MainFrame(None, 'a title')
app.MainLoop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...