2 votes

Python : Comment figer/dissoudre certains éléments dans wxCheckListBox ?

J'essaie de mettre en place un wx.CheckListBox en Python dans lequel je veux que certains éléments de la liste soient toujours vérifiés. J'ai essayé d'utiliser SetCheckedStrings(stringList) sur l'événement wx.EVT_CHECKLISTBOX . Cependant, j'ai obtenu le résultat inverse, lorsque j'ai décoché un élément de la liste stringList il n'est pas coché ; lorsque je clique à nouveau dessus pour le vérifier, je ne peux plus le faire.

Est-ce que quelqu'un peut me donner un conseil pour garder certains articles en wx.CheckListBox sont toujours cochées ou qu'elles ne peuvent pas être cochées ?

0voto

Fenikso Points 4270

Si un événement se met en travers de votre chemin, vous pouvez toujours le désactiver pour un moment en utilisant self.box.Unbind(wx.EVT_CHECKLISTBOX) . Cependant, cet échantillon fonctionne pour moi même sans déliaison :

import wx

CHOICES = ["One", "Two", "Three", "Four", "Five"]
ALWAYS_ON = ["One", "Three"]

class MainWindow(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)

        self.panel = wx.Panel(self)
        self.box = wx.CheckListBox(self.panel, choices=CHOICES)

        self.sizer = wx.BoxSizer()
        self.sizer.Add(self.box)

        self.panel.SetSizerAndFit(self.sizer)  
        self.Show()

        self.box.Bind(wx.EVT_CHECKLISTBOX, self.OnCheckBoxList)
        self.box.SetCheckedStrings(ALWAYS_ON)

    def OnCheckBoxList(self, e):       
        index = e.GetSelection()
        label = self.box.GetString(index)
        if label in ALWAYS_ON:
            self.box.Check(index)           

app = wx.App(False)
win = MainWindow(None)
app.MainLoop()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X