如何在Pharo 13中运行无环境界面的独占窗口GUI应用?
在Pharo 13中直接启动全屏无环境界面的Spec 2应用
Pharo 13的解决方案
不需要生成安装包或精简镜像,直接通过启动脚本替换Pharo默认界面即可,分两种实现方式:
方式1:调整Presenter窗口为全屏并隐藏系统UI
编写启动脚本start.st,内容如下:
"删除Pharo默认的菜单栏和任务栏" World submorphs do: [:m | (m isKindOf: MenuMorph) | (m isKindOf: TaskbarMorph) ifTrue: [m delete]]. "启动自定义Presenter并设置全屏" | appWindow | appWindow := MyPresenter new open window. appWindow extent: Display extent; "铺满整个屏幕" position: 0@0; beUnresizeable; "可选,禁止调整窗口大小" removeLabel. "可选,移除窗口标题栏"
运行命令保持和Pharo 7一致:
Pharo.exe myApp.image st start.st
方式2:直接替换World内容(更彻底)
如果希望完全清空Pharo的默认World,直接把Presenter作为主界面,脚本可以写成:
"清空World所有子组件" World clearAllSubmorphs. "将Presenter的Widget直接嵌入World" MyPresenter new asWidget openInWorld. "设置World全屏" World extent: Display extent.
若要避免加载Pharo默认偏好设置(减少多余UI元素),可以添加启动参数:
Pharo.exe myApp.image --no-default-preferences st start.st
其他Smalltalk实现的替代方案
Squeak
Squeak的实现逻辑更直接,启动脚本start.st示例:
"清除所有默认界面元素" World removeAllMorphs. "启动自定义组件并全屏" MyMorph new openInWorld. World fullScreen.
启动命令:
Squeak.exe myApp.image -script start.st
Dolphin Smalltalk
通过关闭IDE窗口并最大化自定义应用窗口实现,脚本示例:
"关闭所有Workspace和系统窗口" Workspace closeAll. SystemWindow allInstances do: [:w | w close]. "启动自定义Presenter并设置全屏无边框" MyPresenter new open. ActiveWindow maximize; borderStyle: BorderStyle none.
内容的提问来源于stack exchange,提问作者Sony Santos
相关产品推荐
相关产品推荐

