Plusieurs ajouts au lieu de [GTK2HS] unique
-
11-11-2019 - |
Question
J'ai un autre problème que je ne peux pas résoudre
J'ai un code suivant qui ajoute un utilisateur (prénom, nom de famille et âge) dans un TreeView. Tout fonctionne bien, sauf pour une petite chose: cela ne fonctionne bien que lorsque vous ajoutez un utilisateur pour la première fois. Lorsque vous appuyez sur ADD, puis essayez d'ajouter un autre utilisateur, il tentera d'ajouter 2 utilisateurs, puis 3, 4 et ainsi de suite, augmentant avec chaque ajout. Voici le code qui attrape l'événement de clic:
onClicked (dodajUczBt gui) (dodajUcz gui dbh stores)
Et voici la fonction dodajUcz
Cela gère le clic:
dodajUcz gui dbh stores =
do entrySetText (nImie gui) ""
entrySetText (nNazwisko gui) ""
entrySetText (nWiek gui) ""
onClicked (cancelAddUczBt gui) (widgetHide (dodajUzDialog gui))
onClicked (zapiszUczBtn gui) procADD
windowPresent (dodajUzDialog gui)
where procADD = do
ucz <- getUczestnik
let store = uczestnicy stores
New.listStoreAppend store ucz
dlugosc <- New.listStoreGetSize store
labelSetText (lblLiczbaUcz gui) $ "Liczba uczestników: "++ show dlugosc
widgetHide (dodajUzDialog gui)
addUser ucz dbh
getUczestnik = do
imie <- entryGetText (nImie gui)
nazwisko <- entryGetText (nNazwisko gui)
wiek <- entryGetText (nWiek gui)
let wiek' = read wiek :: Integer
return $ Uczestnik 0 imie nazwisko wiek' False
Uczestnik
est un type de données algébrique et addUser
est une fonction qui ajoute un Uczestnik
dans la base de données. GUI est également un type de données algébrique GUI
, qui contient tous les éléments de l'interface graphique créés par castToXml
Il me semble que widgetHide
est le principal problème, car même si vous ne faites rien (ouvrez simplement la boîte de dialogue, puis fermez-le), il essaiera d'ajouter 2 utilisateurs la prochaine fois que vous l'ouvrez.
Des idées sur la façon de résoudre ce problème? Toute aide serait grandement appréciée :)
Pas de solution correcte