我有解決不了多次添加,而不是單一的[gtk2hs]
另一個問題,我有以下的代碼,將用戶添加(名字,姓氏和年齡)成樹狀。除了一件小事外,這一切都運行良好:只有當您第一次添加用戶時,它才能很好地工作。當你點擊添加,然後嘗試添加另一個用戶時,它會嘗試添加2個用戶,然後添加3個,4個等等,每增加一個用戶都會增加。下面是捕獲點擊事件代碼:
onClicked (dodajUczBt gui) (dodajUcz gui dbh stores)
,這裏是處理該點擊功能dodajUcz
:
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
是一個代數數據類型和addUser
的是,增加了Uczestnik
到數據庫中的功能。 GUI也是一個代數數據類型GUI
,保存所有castToXml
創建GUI元素在我看來,這widgetHide
是主要的問題,因爲即使你沒有做任何事情(只要打開對話框,然後關閉它)會在下次打開時嘗試添加2個用戶。
任何想法如何解決這個問題?任何幫助將不勝感激:)