Почему это не работает (диалог wxpython / color) - PullRequest
2 голосов
/ 02 июня 2011
class iFrame(wx.Frame):
    def __init__(blah blah blah):  
        wx.Frame.__init.__(blah blah blah)  

        self.panel = wx.Panel(self, -1)  
        self.panel.SetBackgroundColour((I put a random RGB here for test purposes))  

        c_color = wx.Button(self.panel, -1, 'Press To Change Color')  
        c_color.Bind(wx.EVT_BUTTON, self.OnCC)  

    def OnCC(self, evt):
        dlg = wx.ColourDialog().SetChooseFull(1)  
        if dlg.ShowModal() == wx.ID_OK:  
            data = dlg.GetColourData()  
            color = data.Colour  
            print (color) # I did this just to test it was returning a RGB
            self.panel.SetBackgroundColour(color)  
        dlg.Destroy()  

То, что я пытался сделать, это связать кнопку с диалоговым окном цвета, сохранить RGB в переменной и использовать его для установки цвета фона панели ... Я протестировал почти все это, я вставил возвращенный RGB непосредственно в саму себя и он работает, так почему он не работает, когда я использую его в этом методе

1 Ответ

3 голосов
/ 02 июня 2011

Строка dlg = wx.ColourDialog().SetChooseFull(1) выглядит как ошибка - не SetChooseFull метод wx.ColourData?

Я внес несколько изменений, чтобы заставить его работать, и прокомментировал код для иллюстрации:

def OnCC(self, evt):
    data = wx.ColourData()
    data.SetChooseFull(True)

    # set the first custom color (index 0)
    data.SetCustomColour(0, (255, 170, 128))
    # set indexes 1-N here if you like.

    # set the default color in the chooser
    data.SetColour(wx.Colour(128, 255, 170))

    # construct the chooser
    dlg = wx.ColourDialog(self, data)

    if dlg.ShowModal() == wx.ID_OK:
        # set the panel background color
        color = dlg.GetColourData().Colour
        self.panel.SetBackgroundColour(color)
    dlg.Destroy()

data.SetCustomColor(index, color) заполняет пользовательские цвета N в диалоговом окне.Я обведу кружок под индексом 0 ниже:

enter image description here

...