gpt4 book ai didi

smalltalk - 如何在GNU Smalltalk中运行GUI相关代码?

转载 作者:行者123 更新时间:2023-12-02 10:20:51 29 4
gpt4 key购买 nike

我有来自 Dolphin Smalltalk 的以下代码:

digitalClockProcess := [[

Processor sleep: 1000.

(View desktop canvas)

font: (Font name: 'Arial' pointSize: 36) beBold;

text: Time now printString at: 10@10;

free

] repeat] fork.

桌面上显示一个数字时钟。这段代码可以在 GNU Smalltalk 上运行吗?我在 VirtualBox 虚拟机上的 Fedora 上尝试了 gstgst-blox,但它不起作用,并且 gst-blox 不存在Ubuntu 以及 Fedora 和 Ubuntu 上的 gst-browser 都给出了

Object: CFunctionDescriptor new: 1 "<0x7ffb3a010dc0>" error: Invalid C call-out g_date_get_type

启动应用程序时。 GNU Smalltalk 中是如何完成的?

最佳答案

我不熟悉 GNU Smalltalk(我使用 Pharo),所以也许有更好的方法来编写代码,但无论如何。

安装

从包管理器安装的

gst 不需要任何 GUI(它是 CLI),即使它提供了它们,它也不会提取运行它们所需的系统库,所以你有安装它们manually :

  • 对于gst-browser(新用户界面):libgtk2.0 libcairo2(在 ubuntu 上测试)
  • 对于gst-blox(旧版用户界面):tcl tk(未测试)

代码

我发现代码存在两个问题:GST 不支持 Process>>sleep:,并且它使用 GUI。

至于 GUI,Smalltalks 有非常不同的 UI 库,Dolphin 面向 MS Windows,GNU Smalltalk 使用 GNU 的东西(GTK 用于新闻 gst-browser,TK/TCL 似乎用于较旧的 gst-blox),Pharo 使用Athens 等。即使他们共享一些概念(例如 MVC 模式),但他们并不真正共享 API。

事实上,GNUSmalltalk 似乎有"new"UI --- VisualGST(gst-browser),并且 gst-blox 已被弃用。

无论如何,经过一番挖掘,我最终得到了以下代码。它创建一个 GTK 窗口(gst-browser 使用的 UI),然后不断更新文本。

window := GTK.GtkWindow new: GTK.Gtk gtkWindowToplevel.
window setTitle: 'Time'.
window resize: 400 height: 300.
label := GTK.GtkLabel new.
label setText: Time now printString.
label show.
window add: label.
window show.

digitalClockProcess := [[
(Delay forSeconds: 1) wait.
label setText: Time now printString.
] repeat] fork.

gst-blox 的代码必须使用 tcl/tk 来代替,这是我不熟悉的。

运行代码

要在 gst-browser 中运行代码,请从顶部菜单中选择“工具 > 底部 Pane ”,然后将代码粘贴到底部 Pane 中的“工作区”(您可以通过“文件 > 新工作区”添加更多工作区。

关于smalltalk - 如何在GNU Smalltalk中运行GUI相关代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34372650/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com