首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wxHaskell按钮状态

wxHaskell按钮状态
EN

Stack Overflow用户
提问于 2016-04-24 01:59:22
回答 2查看 72关注 0票数 0

我正在使用wxHaskell编写一个应用程序,我希望能够检测按钮的状态(无论它是否在任何给定时间被按下)。不过,我在弄清楚该怎么做时遇到了一些麻烦。首先,我认为可能有一个“按钮按下”属性,我可以使用,但似乎没有。然后,我想要维护一个IORef,我更新了按钮和按钮的事件。但是,这将要求Button对象实际具有按钮和向下按钮的事件,而这似乎不是。这是Commanding的一个实例,但我假设command事件只在按钮上触发,这还不够。还有人有其他建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-24 05:12:52

解决方案

您可以通过检测触发这些事件的低级操作来实现这一点(例如。鼠标按钮向下,空格键向下。

在WX中,您可以使用以下函数和构造函数:

代码语言:javascript
复制
mouse :: Reactive w => Event w (EventMouse -> IO ())
data EventMouse = ... | MouseLeftDown !Point !Modifiers

而且,正如你所建议的那样,你可以将自己的状态保持在一个IORef中。我怀疑这里的左键意味着主按钮(对左撇子用户来说是右)。

UI设计原则

第二个问题,你还没有被我回答,是这是否是好的UI设计。

按钮的行为(假设使用鼠标进行交互)是当用户在按下同一区域的鼠标按钮后释放按钮区域()中的鼠标按钮时报告的。如果用户移动和释放,或按下‘逃逸’,就没有点击。

对被按下的按钮采取任何行动(而不是点击)对用户来说都是不自然的。

在实践中,使用该方法的唯一可接受的方法是,imho采取一个操作,其效果只能在释放后见证,如果取消单击,则立即将撤消(即。鼠标按钮释放外按钮区域)。

编辑:还请考虑到,具有可访问性要求的用户可能启用了操作系统设置,这些设置会影响报告按钮单击的方式和时间(但不包括向下/向上鼠标事件)。

票数 1
EN

Stack Overflow用户

发布于 2016-04-24 14:50:02

无法知道wxButton是否被按下,因为它是一个按钮的抽象,它故意隐藏了这个实现细节。如果您需要知道按钮状态,请使用wxToggleButton

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36818471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档