下面是一个使用 gtk2hs 的简单示例,它添加了一个标签,然后在其上添加了一个点击处理程序。当您单击标签时,永远不会调用 buttonPressEvent 处理程序。按钮可以放在容器中,但是......容器会触发按钮按下信号吗?
我有一个矩形区域,其中包含一些文本(当前使用标签),我需要知道用户是否单击了它。我不希望它看起来像一个按钮。
{-# LANGUAGE PackageImports #-}
import Graphics.UI.Gtk
import Graphics.UI.Gtk.Gdk.EventM
import Graphics.UI.Gtk.Gdk.GC
import "mtl" Control.Monad.Trans(liftIO)
main = do
initGUI
window <- windowNew
window `onDestroy` mainQuit
label0 <- labelNew $ Just "static label"
widgetAddEvents label0 [ButtonPressMask] -- is this necessary? Still doesn't work with it, though
label0 `on` buttonPressEvent $ tryEvent $ do
liftIO $ putStrLn "static label clicked"
containerAdd window label0
widgetShowAll window
mainGUI