Classe: wxListBox().
Une ListBox est utilisée pour sélectionner un ou plusieurs éléments d'une liste d'articles.
Les articles sont affichés dans une scrolling box. L'article, sélectionné est affiché en vidéo inverse.
Les éléments de la liste sont numérotés à partir de zéro et leur nombre peut être limité suivant certaines plates-formes.
Notez que les tyles wxLB_SINGLE , wxLB_MULTIPLE et wxLB_EXTENDED sont mutuellement exclusifs. (une seule sélection par défaut).
listBox = wx.wxListBox ( wxWindow * parent = no-NULL, wxWindowID id = -1, const wxPoint & pos = wx.wxDefaultPosition, const wxSize & size = wx.wxDefaultSize, const wxArrayString & choice = nom du tableau, long style = wx.wxLB_XXXX, const wxValidator & validator = wx.wxDefaultValidator, const wxString & name = "nom de la listBox" )
parent fenêtre Parent. Ne doit pas être NULL.
id N° d'identification de la listBox. -1 indique une valeur par défaut.
pos position de la listBox.
size taille de la listBox.
choice un tableau de chaînes de caractères pour initialiser le contrôle.
style est le style de la boîte de dialogue.
validator est utilisé dans le cas d'un appel à un validateur.
name est utilisé pour associer un nom à la listBox.
Vous trouverez ci-dessous, la liste des méthodes implémentées par wxLua 2.8.10.
Deselect(int n) | Désélectionne l'élément de la liste indexé (n). |
GetSelections() | Retourne le N° de la ligne sélectionnée. |
HitTest(objetPoint) | Retourne l'élément situé aux coordonnées objetPoint. (objetPoint = wx.wxPoint()) |
InsertItems(string[], pos) | Insére le nombre de stringdonné avant la position spécifiée (pos). |
IsSelected(n) | Détermine si un élément est sélectionné. |
Set(wxArrayString& choices) | Ajoute la nouvelle liste qui lui est donnée.(prevoir de l'effacer avant avec Array:Empty()) |
SetFirstItem(n) | Régle l'élément spécifié pour être le premier élément visible. |
SetSelection(n, true) | Définit la sélection à l'élément donné en (n) ou la supprime si n = wxNOT_FOUND. |
SetStringSelection("string", true) | Sélectionne l'élément avec la chaîne "string" spécifiée. |
Vous allez trouver dans le code suivant, un appel à: os.date("*t") et os.date("!*t").
Il s'agit d'une fonction de base Lua. Voir à ce sujet, le chapitre consacré à ce langage.
require("wx") -- inutile si on utilise wxluafreeze.exe -- Création de la frame et de son panel. local frame = wx.wxFrame(wx.NULL, -1, "wxListBox", wx.wxDefaultPosition, wx.wxSize(500, 250)) local panel = wx.wxPanel(frame, -1) frame:Centre(wx.wxBOTH) -- Création des listes. local zone01 = {"CET", "GMT", "MSK", "EST", "PST", "EDT"} local zone02 = { "Heure normale de l'Europe Centrale.", "Heure Universelle de GREENWICH.", "Heure normale de Moscou.", "Heure normale de l'Est des Etats-Unis.", "Heure normale du Pacifique.", "Heure d'été de l'Est des Etats-Unis." } local zone_diff = {1, 0, 3, -5, -8, -4 } -- Création des sizers. mainSizer = wx.wxBoxSizer(wx.wxVERTICAL) -- sizer principal hBox1 = wx.wxBoxSizer(wx.wxHORIZONTAL) -- sizer listBox -- sizer V pour textCtr et staticTexte vBox2 = wx.wxBoxSizer(wx.wxVERTICAL) -- sizer pour regrouper vBox2 hBox2 = wx.wxBoxSizer(wx.wxHORIZONTAL) hBox3 = wx.wxBoxSizer(wx.wxHORIZONTAL) -- sizer Bouton -- Création de la listeBox et mise en place dans son Sizer. local listBox = wx.wxListBox(panel, -1, wx.wxDefaultPosition, wx.wxSize(100, 100), zone01, wx.wxLB_SINGLE) listBox:SetSelection(0) hBox1:Add(listBox, 0, wx.wxTOP, 40) -- Création d'un textCtrl et mise en place dans son Sizer. local texte = "Heure normale de l'Europe Centrale. \n" local textCtrl = wx.wxTextCtrl(panel, -1, texte, wx.wxDefaultPosition, wx.wxSize(250, 50), wx.wxTE_MULTILINE + wx.wxTE_NO_VSCROLL) vBox2:Add(textCtrl, 0) -- Création d'un staticTexte et mise en place dans son Sizer. local staticTexte = wx.wxStaticText(panel, -1, "") vBox2:Add(staticTexte, 0, wx.wxTOP, 15) -- Regroupement des deux sizers vBox2 dans hBox1 hBox2:Add(vBox2, 0, wx.wxLEFT + wx.wxTOP, 40) hBox1:Add(hBox2, 0) -- Bouton de fermeture et mise en place dans son Sizer. local btn = wx.wxButton(panel, wx.wxID_CLOSE, "Fermeture") hBox3:Add(btn, 0, wx.wxALIGN_CENTRE) -- Mise en place des Sizers mainSizer:Add(hBox1, 0, wx.wxALIGN_CENTRE) mainSizer:Add(hBox3, 1, wx.wxALIGN_CENTRE) panel:SetSizer(mainSizer) -- Relevé de l'heure GMT. local dtGmt = os.date("!*t") local hGmt = dtGmt.hour local mnGmt = dtGmt.min print(dtGmt) textCtrl:AppendText("Heure locale: "..hGmt + zone_diff[1].. " h et "..mnGmt.." min") -- Relevé de l'heure locale. local dtLoc = os.date("*t") local hLoc = dtLoc.hour local mnLoc = dtLoc.min staticTexte:SetLabel("Heure locale, en FRANCE: " .. hLoc .. " h et " .. mnLoc .." min") -- Gestion des sélections. listBox:Connect(-1, wx.wxEVT_COMMAND_LISTBOX_SELECTED, function(event) local numItem = listBox:GetSelection() local choix = listBox:GetString(numItem) diff = zone_diff[numItem+1] textCtrl:SetValue(zone02[numItem+1].. "\n") textCtrl:AppendText("Heure locale: "..hGmt + diff.. " h et "..mnGmt.. " min") end) btn:Connect(wx.wxID_CLOSE, wx.wxEVT_COMMAND_BUTTON_CLICKED, function (event) frame:Destroy(); event:Skip() end) -- Démarrage de l'application. frame:Show(true) wx.wxGetApp():MainLoop()
Ce qui donne comme résultat.