我还有一个无法解决的问题
我有以下代码将用户(名字、姓氏和年龄)添加到树视图中。除了一件小事之外,一切都很好:只有当您第一次添加用户时它才能正常工作。当您点击添加然后尝试添加另一个用户时,它将尝试添加 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
,它包含由 gui 创建的所有 gui 元素castToXml
在我看来,这widgetHide
是主要问题,因为即使您什么都不做(只需打开对话框然后关闭它),它会在您下次打开它时尝试添加 2 个用户。
任何想法如何解决这个问题?任何帮助将不胜感激 :)