【发布时间】:2012-02-23 12:38:15
【问题描述】:
我还有一个无法解决的问题
我有以下代码将用户(名字、姓氏和年龄)添加到树视图中。除了一件小事之外,一切都很好:只有当您第一次添加用户时它才能正常工作。当您点击添加然后尝试添加另一个用户时,它将尝试添加 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 个用户。
任何想法如何解决这个问题?任何帮助将不胜感激:)
【问题讨论】:
标签: user-interface haskell dialog widget gtk2hs