问题标签 [threepenny-gui]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
104 浏览

haskell - 累积具有可重置初始值的事件

我需要一个类似的函数accumB,但我希望初始值是 aBehavior而不是常数。当初始值改变时,累加器应该“重置”并从该值开始累加。具体来说,对于以下代码和事件序列:

accumB'应该返回值的阶跃函数0, 1, 2, 5, 6

这对于目前在 Threepenny 中可用的组合器是否可行,或者它是否需要支持动态切换?(我认为答案是“不”,所以我目前正在尝试accumB'IORefs 来实现我自己的......)如果不是,accumB'如上所述,在语义上是明确定义的,或者我应该Event a在我的时间使用- 改变初始值?

0 投票
1 回答
193 浏览

haskell - 功能(行为 a )->(a -> IO b )-> 行为 b。它在语义上合理吗?

我想在 Behavior 上映射一个 IO 操作,但 (threepenny-gui) 中没有这样的函数 是否有某种方法可以使用公开的 API 构建它。它在语义上合理吗?

我已经在三便士内实现了这个,在我的用例中工作正常。

我从来没有单独使用 unsafeMapIOB 只是 unsafeMapIOT 。我相信正在发生的是 unsafeMapIOB 只执行一次,然后 unsafeMapIO 被事件触发。

0 投票
1 回答
544 浏览

haskell - threepenny-gui:如何获取文本?

使用 Threepenny-gui 中的“设置文本”,您可以给定一个元素和一个字符串,设置该元素的文本:

get 函数的存在使我认为应该可以获取给定元素的文本。

但是,“获取文本”的返回类型不是我所期望的。如何从元素中恢复原始字符串?

0 投票
1 回答
100 浏览

haskell - How do I get the arrow keys to change the focus to the next element in a threepenny-gui grid?

The tab key changes the focus in a grid to the next element. How do I get the up/down/left/right arrow keys to work also?

0 投票
2 回答
425 浏览

haskell - 用 cabal 安装threepenny-gui:我做错了什么?

我尝试安装threepenny-gui,并且可能在此过程中损坏了一些东西。我的问题是(1)我该如何解决这个问题,以及(2)当 cabal 发出有关可能重新安装的警告时,应该如何进行?

threepenny-gui 警告我它可能会破坏 regex-compat:

我还没有在haskell中使用过正则表达式,所以这似乎值得冒险,我继续:

这启动了一个发出此警告的过程:

但除此之外似乎有效。然后我尝试运行几个示例程序,但没有成功:

我用谷歌搜索了那个错误,发现只有一页,我没有看到如何使用。

我想问题可能是我破坏了 regex-compat,所以我尝试重新安装它:

我不知道是否重新安装了 regex-compat,但是threepenny-gui 中的示例仍然无法为我运行。

我在 2011 年初的 MBP 上运行 OS X Mavericks。在三便士之前,我尝试安装 wxWidgets 和 GTK,这两个似乎都成功了,但也不让我运行示例代码。这让我考虑购买另一台计算机并切换到 Linux。(在这台机器上安装 Linux 也让我望而却步。)

0 投票
0 回答
137 浏览

haskell - 带有事件的 accumE 的奇怪行为(UI a -> UI a)

我正在试验threepenny-gui,试图学习FRP接口。我想避免使用 accumE/accumB 而不是 IORef:s 的所有显式共享状态。我有四个不同的信号(启动、停止、定时器、重置),它们都会影响全局状态和用户界面。我accumE w $ concatenate <$> unions [e0, e1, e2, e3]用来使事件共享相同的状态w。这是一个简短的片段,它抓住了它的本质(只有一个信号):

这似乎工作正常(尽管我想知道它是否正常)。但是,如果我改为将事件更改为具有类型Event (UI World -> UI World)(并删除 runW 字段),事情就会变得混乱:

似乎所有 UI 操作都以某种方式累积,并随着每个事件执行越来越多的次数!我认为 accumE 就像一个折叠,除非明确累积,否则累积状态会被替换。一般来说,处理这个问题的正确/最佳方法是什么?

0 投票
2 回答
302 浏览

haskell - Threepenny-gui 中基于行为的动态元素

简单来说,我正在寻找一种显示Behaviour (UI Element).

我的实际用例是显示一个可以过滤的表格。所以我有一个函数tableElement :: String -> UI ElementString参数是过滤条件)和一个输入字段filterElement :: Element,它代表过滤器。对我来说,将这些结合起来最自然的方式是这样的:

这也是它在 Elm 中完成的方式。

到目前为止,我发现的最接近的东西是 using sink children,但这仅适用[Element][UI Element]. 此外,我必须使用一个虚拟元素作为父元素或摆弄剩余的子元素。

用threepenny-gui实现这样的事情的最佳方法是什么?

0 投票
1 回答
118 浏览

haskell - Haskell Threepenny Gui:在特定点从 Canvas 读取颜色?

有没有办法读取画布特定点的颜色?

就像是:

我检查了Graphics.UI.Threepenny.Canvas的文档,但找不到任何功能。也许我只是没看到,因为我使用 Haskell 的时间不长。

如果您对我有任何提示,请告诉我。

非常感谢,克莱姆

编辑:感谢 Heinrich Apfelmus 的回答,我能够编写一个可行的解决方案并希望分享它以防有人需要相同的功能。当然,如果您使用它并进行调整,请随时分享:)

0 投票
0 回答
137 浏览

javascript - Threepenny-gui 画布表现不佳

我尝试用threepennt-gui 绘制100 个动画圆圈。感觉有点奇怪,所以我把它设为 1000,问题很明显:

  • 我可以看到绘图(即画布是黑色的,然后出现圆圈,然后又变黑了,等等
  • 只画一次就花了几秒钟(它应该每秒画 50 次(因为计时器不会让我画 60 次))
  • 每一帧都花费了越来越长的时间。几帧后它根本不会完成。

这是我的代码:

所以,我想,也许这会生成低效的 js 代码,即展开循环(好吧,几千行仍然应该生成并执行得相当快)所以我将圆圈转换为 Json 并使用 theepenny 的 ffi 函数,如下所示:

在计时器事件中:

- 现在我再也看不到这幅画了(即全部同时出现)。相反,Firefox 停止响应用户输入,直到绘图完成(据我所知,帧时间更加一致) - 编辑:我在 beginPath 之后缺少空括号,因此所有圆圈都连接起来。现在它再次闪烁(100;1000 需要大约 1 秒才能绘制并且不响应用户输入)。

这表明画布是问题所在。(经过一番搜索似乎得到证实)

有没有办法解决这个问题?(理想情况下不涉及使用不同的 gui-lib)

0 投票
1 回答
145 浏览

haskell - 尝试测试threepenny-gui时出错

我想试试 haskell 的threepenny-gui 包。所以我跑

...没有任何问题

所以我尝试了以下示例:

但我收到有关类型的错误:

即使我尝试运行示例文件,我也会遇到相同的错误

有谁知道我做错了什么?