问题标签 [wxhaskell]

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 投票
0 回答
66 浏览

wxhaskell - 用 wxhaskell 播放声音在 OSX 上不起作用?

这并没有像我希望的那样播放声音。我只能找到 2006 年左右的这个建议:“你是否使用配置 --enable-sound 构建选项构建了 wxWidgets?” 这仍然有效吗?如果是这样,我该怎么做?

使用 OSX 10.9.5、GHC 7.10.2、WX 0.92.2.0

0 投票
2 回答
70 浏览

user-interface - wxHaskell 按钮状态

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

0 投票
1 回答
108 浏览

haskell - WxHaskell 破坏了命令行参数功能

我在 WXHaskell 中编写了一个程序,并验证它可以工作。长话短说,我计划通过 GUI 或命令行界面使用该程序。后来我继续使用 GetOpts 库添加命令行参数处理,并开始测试各种参数是否按预期工作。

但是,一旦我开始使用命令行选项运行程序,程序就开始失败:任何时候在 GUI 模式下调用程序(即运行 WXHaskell),程序都会崩溃,并显示有关无法识别的命令行选项的警告(此警告的形式为WXwidgets 弹出窗口)。每当程序在终端模式下运行时,所有选项都已正确处理,所以我怀疑运行 WX 计算会导致“ARGV”值被传递给某些 WX 函数,当然,因为这些参数是用于程序主体,它们将无法识别。

我编写了一个小测试用例来重现这种行为(没有 GetOpts)。

命令行参数被处理,计算(简单地将用户指定的 Int 乘以 3)在终端上或通过 gui 运行。

如果用户指定“终端”,程序完成没有问题。如果用户不指定任何参数,则计算默认以 gui 模式运行,并且也正常完成。

如果用户指定“gui”参数,程序崩溃并出现错误(在弹出窗口中):“Unexpected parameter 'gui'”。

如果有人知道为什么我的参数显然被传递给后续操作,或者更好的是,如何阻止这种情况发生,我会非常高兴!

0 投票
2 回答
825 浏览

windows - 如何安装 wxHaskell?

我已经下载了适用于 Windows 7 的最新 Haskell 平台(8.0.1 版本)wxWidgets-3.0.2,设置了所有需要的环境变量。我已经使用“cabal install”成功安装了“wxdirect”,但是当我尝试安装“wxc”时它失败了。安装日志:

我需要在哪里获取“gcc_dll\mswud\”文件夹?

PS 出于某种原因,Abriline 和 Achelanne 都不适合我。

PPS 我尝试按照 Haskell-wiki 的说明安装这个库,但它没有工作抱怨大量的依赖项。

更新 我尝试使用带有 Abriline 安装程序的 Haskell Platform 2014.2.0.0 安装 wxHaskell。它停止构建 wxc。日志:

更新 带有“cabal install wxc -v3”的扩展日志: http ://rgho.st/7BJcHzJTF

0 投票
1 回答
496 浏览

haskell - 如何使用堆栈与 nix 来构建 wxHaskell 项目?

我正在尝试使用 Nix 和 Stack 为 wxHaskell 设置构建环境。

我已经通过 nix 安装了 wxWidgets-3.0.2。这是 .cabal 文件中的相关部分

和 stack.yaml 文件

我尝试添加

但这显然不是正确的方法。

所以我去掉了 .yaml 文件中的 nix 部分并尝试了$ stack --nix build导致失败的命令。日志文件说

但是我确实通过 nix 安装了 wx-config 和 wxwidgets。由于某种原因,构建过程找不到它。我可以做些什么来设置这个构建环境?有没有办法指导构建过程查看包含 wx-config 的目录?我不知道为什么它找不到它。它在PATH中。

0 投票
1 回答
61 浏览

wxhaskell - wxhaskell:使用面板的“单击”更新状态字段

我想要一些关于如何在单击“面板”后更新“状态字段”的建议。

下面的程序演示了这个问题。该程序绘制了两个框架。您可以将左框架想象成某种绘图区域,而右框架包含“红色”和“绿色”按钮。单击标记为“红色”的按钮后,状态字段的文本将更新为“当前颜色:红色”。标记为“绿色”的按钮将文本更新为“当前颜色:绿色”。

用户单击左侧面板后如何更改状态字段的文本?例如,将其更改为“您成功单击了绘图面板”。

为什么我不能像在按钮的“on command”中那样在“on click”中执行此操作?(请参阅下面源代码中的注释。)

非常感谢。

0 投票
1 回答
181 浏览

haskell - 无法运行在 GHCI 中运行的 wxHaskell 程序

我正在尝试在 Windows 7 上创建一个 HelloWorld.exe,它演示了我在网上找到的一个非常简单的 wxHaskell 程序。代码如下:

在一个名为 HelloWorldWX.hs 的文件中。我下载了 wxHaskell 的二进制发行版(wxInstall-Achelanne-64-0.1)。运行 Install.bat 后,我​​注意到它使用 Cabal 设置了一个新的包位置,它安装了 wx-0.92.0.1 及其所有依赖项。它第一次运行时由于某些未指定的原因而失败。我跑了ghc-pkg list,发现所有的包都列在新的 cabal 包位置。我决定注销所有软件包并重试。这第二次成功了,并提示我在我的搜索路径中包含以下目录:

C:\Users...\Downloads\wxInstall-Achelanne-64-0.1\DLLs;C:\Users...\Downloads\wxInstall-Achelanne-64-0.1\wxWidgets\lib\gcc_dll

此时,当我将 HelloWorldWX.hs 加载到 GHCI 并运行 main 时,我得到了带有退出按钮的窗口框架,就像我期望的那样。

然后我将 .hs 文件编译成 .o 文件。然后我尝试使用以下命令创建可执行文件:

我不太确定为什么在查找这些参考资料时遇到问题。

我试着用

runhaskell HelloWorldWX.hs

并从 ghc 收到以下错误弹出窗口:

在此处输入图像描述

此处设置的 Verbose 标志提供了一堆信息,这些信息并未真正详细说明任何具体问题。

我正在将 Haskell GHC 7.10.3 完整包从 Windows Installer 运行到本地用户目录。我在此工作站上没有本地管理员权限,但我可以在另一台机器上尝试。

有什么线索吗?我想 wxHaskell 的第一次安装失败已经损坏了某些东西,或者我遇到了权限问题。

0 投票
0 回答
57 浏览

haskell - wxHaskell:调整布局以适应动态内容

我在 wxHaskell 中使用动态布局时遇到了一些困难。我有嵌套面板,最里面的面板的布局经常发生变化,导致它超出其父级的大小。

我不清楚 Graphics.UI.WXCore.Layout 中用于转换布局的各种函数的用途和效果,尤其是在dynamicstretchexpandfill等上。这些函数提供的功能的解释或具体示例如何允许面板根据内容大小的变化调整大小。

我在此期间使用 windowReLayout 手动更新触发布局扩展的事件的布局,但我认为有一种更自然/优雅的方式来实现所需的行为。


顺便说一句,我通过响应式香蕉使用 WX,但这不应该对小部件本身的布局行为有太大的改变。

0 投票
1 回答
87 浏览

multithreading - 使用 wxHaskell 将无窗口事件注入到 wxWigets 事件循环中

另一个对 Haskell 方式的多线程和 wxWidgets 的看法。

我认为https://stackoverflow.com/a/12596595/4095104是在 wx 事件循环中运行代码的好方法,但它需要我首先在start/中创建一个窗口run并从中返回,以便事件循环可以运行它当然,虽然我的应用程序本质上是无窗口的,并且可以从内部(多线程)逻辑按需创建窗口。有没有一种好方法可以在循环中创建一个不绑定到任何预先存在的 wxWidgets 对象的新事件?

编辑:代码示例:

0 投票
0 回答
68 浏览

haskell - 更新动态创建内容的可见性

根据@HeinrichApfelmus 的建议从 github 复制此内容:

这可能只是我的一个使用错误,但我在尝试为动态创建的 UI 元素(当然在 WX 中)设置条件可见性/布局时注意到一个奇怪的现象。作为一个玩具示例,我尝试创建一个小部件,它可以动态创建 StaticText 元素,并允许用户通过“<”“>”按钮“浏览”这些元素。

我注意到的问题是,在创建新标签之前,所有标签都是不可见的,此时焦点中的当前小部件变得可见。无论这是一个错误或只是我滥用的范例,还是反应式框架的微妙之处,我不确定如何解决这个问题。这是我此时的代码,它显示了问题:

>