如何使对话框功能正常工作
How to get the dialog functions work
我想打开一个对话框,并在对话框后处理数据 returns 好的。问题是 :success-fn 在提交对话框后没有被调用。这与按钮的监听器有关。如果调用connectDialog时没有listener,则调用:success-fn函数
代码:
(def dbConnectionForm
(grid-panel :columns 2
:items ["Database Driver" (combobox :id :dbdriver :model ["postgresql" "mysql"])
"Database" (text :id :dbname :text "postgres")
"Port" (text :id :dbport :text "32768")
"Username" (text :id :username :text "postgres")
"Password" (text :id :password :text "postgres")]))
(defn connectionDialog []
(print (-> (dialog
:content dbConnectionForm
:option-type :ok-cancel
:type :plain
:success-fn (fn [e] (print (value dbConnectionForm)))
)pack! show!))
)
(def connectButton (button :text "Connect"
:listen [:action (fn [e] (connectionDialog))]))
这可能是因为您正在使用 print
。将其更改为 println
或在 print
.
之后的回调中添加对 flush
的调用
如果 (value dbConnectionForm)
returns 是一个很小的值(比如当变成一个字符串时只有几个字符),并且不包含换行符,它可能不会提示外流自动刷新,因此文本会卡在缓冲区中。
我想打开一个对话框,并在对话框后处理数据 returns 好的。问题是 :success-fn 在提交对话框后没有被调用。这与按钮的监听器有关。如果调用connectDialog时没有listener,则调用:success-fn函数
代码:
(def dbConnectionForm
(grid-panel :columns 2
:items ["Database Driver" (combobox :id :dbdriver :model ["postgresql" "mysql"])
"Database" (text :id :dbname :text "postgres")
"Port" (text :id :dbport :text "32768")
"Username" (text :id :username :text "postgres")
"Password" (text :id :password :text "postgres")]))
(defn connectionDialog []
(print (-> (dialog
:content dbConnectionForm
:option-type :ok-cancel
:type :plain
:success-fn (fn [e] (print (value dbConnectionForm)))
)pack! show!))
)
(def connectButton (button :text "Connect"
:listen [:action (fn [e] (connectionDialog))]))
这可能是因为您正在使用 print
。将其更改为 println
或在 print
.
flush
的调用
如果 (value dbConnectionForm)
returns 是一个很小的值(比如当变成一个字符串时只有几个字符),并且不包含换行符,它可能不会提示外流自动刷新,因此文本会卡在缓冲区中。