使用golang语言如何开发windows界面?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
在awesome-go节点下有不少开发界面的库,大部分是基于网络,gtk, qt跨平台的,也有基于sciter去绑定的go-sciter,基于原生包装的跨平台的ui库,只支持windows桌面端走的
个人倾向于后2个,适合个人的技术栈,试用了下ui这个库,演示比较少就4个,运行起来有点卡,而且生成的可执行文件很大。最重要的是不支持设置控件坐标(没找到),而且开放的接口比较少。
下面对比下ui和走代码,就拿按钮控件来说。李
<代码类=" language-go ">按钮 ,,ControlBase ,b大敌;CuiButton ,onclick大敌;,,按钮ControlBase ,iface大敌;,,控制 ,c大敌;,,CuiControl控制 ,, ,, ,, ,, ,, ,, ,, ,, ,, <代码类=" language-rust ">按钮 ,,WidgetBase ,,checkedChangedPublisher EventPublisher ,clickedPublisher大敌;,,,EventPublisher ,textChangedPublisher大敌;,EventPublisher ,imageChangedPublisher大敌;EventPublisher ,,形象,,,,,,,,图像 ,持续的大敌;,,,,,,bool WidgetBase ,,WindowBase ,父母的大敌;,,,,,,,,,,容器 ,toolTipTextProperty大敌;,,,财产 ,,toolTipTextChangedPublisher EventPublisher ,graphicsEffects大敌;,,,,,WidgetGraphicsEffectList ,alwaysConsumeSpace大敌;,,,,bool WindowBase ,,窗口,,,,,,,,窗口 ,hWnd大敌;,,,,,,,,,winHWND ,origWndProcPtr大敌;,,,,uintptr ,名大敌;,,,,,,,,,字符串 ,字体大敌;,,,,,,,,,字体 ,快捷菜单大敌;,,,,,菜单 ,,一次性用品,,,,,一次性 ,disposingPublisher大敌;,,EventPublisher ,dropFilesPublisher大敌;,,DropFilesEventPublisher ,keyDownPublisher大敌;,,,KeyEventPublisher ,keyPressPublisher大敌;,,KeyEventPublisher ,keyUpPublisher大敌;,,,,KeyEventPublisher ,mouseDownPublisher大敌;,,MouseEventPublisher ,mouseUpPublisher大敌;,,,MouseEventPublisher ,mouseMovePublisher大敌;,,MouseEventPublisher ,mouseWheelPublisher大敌;,MouseEventPublisher ,,boundsChangedPublisher EventPublisher ,sizeChangedPublisher大敌;,EventPublisher ,,最大尺寸,,,,,,,大小 ,minSize大敌;,,,,,,,大小 ,,背景,,,,,,刷 ,光标大敌;,,,,,,,,光标 ,暂停大敌;,,,,,,保龄球 ,可见的大敌;,,,,,,,保龄球 ,启用大敌;,,,,,,,保龄球 ,name2Property大敌;,,,,mapstringProperty ,enabledProperty大敌;,,,财产 ,,enabledChangedPublisher EventPublisher ,visibleProperty大敌;,,,财产 ,,visibleChangedPublisher EventPublisher ,focusedProperty大敌;,,,财产 ,,focusedChangedPublisher EventPublisher ,calcTextSizeInfoPrev大敌;代码,calcTextSizeInfo 只列出了属性,没有列出方法。但也可以看出ui来这个库开放的接口非常少。而这走个库,该有的都有了,接口非常丰富。实现的控件非常多,甚至连webview都有,例子也丰富不少。 需要注意的这个库里面的控件是基于原生控件的,而不是自己绘制的 走使用 <代码类=" language-go "> ,,label1 label2 walkLabel ,,mv主窗口 ,,,标题大敌; ,,,,大小SizeWidth高度 ,,,,布局VBoxMarginsZero ,,,null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null
<代码类=" language-rust ">按钮 ,,WidgetBase ,,checkedChangedPublisher EventPublisher ,clickedPublisher大敌;,,,EventPublisher ,textChangedPublisher大敌;,EventPublisher ,imageChangedPublisher大敌;EventPublisher ,,形象,,,,,,,,图像 ,持续的大敌;,,,,,,bool WidgetBase ,,WindowBase ,父母的大敌;,,,,,,,,,,容器 ,toolTipTextProperty大敌;,,,财产 ,,toolTipTextChangedPublisher EventPublisher ,graphicsEffects大敌;,,,,,WidgetGraphicsEffectList ,alwaysConsumeSpace大敌;,,,,bool WindowBase ,,窗口,,,,,,,,窗口 ,hWnd大敌;,,,,,,,,,winHWND ,origWndProcPtr大敌;,,,,uintptr ,名大敌;,,,,,,,,,字符串 ,字体大敌;,,,,,,,,,字体 ,快捷菜单大敌;,,,,,菜单 ,,一次性用品,,,,,一次性 ,disposingPublisher大敌;,,EventPublisher ,dropFilesPublisher大敌;,,DropFilesEventPublisher ,keyDownPublisher大敌;,,,KeyEventPublisher ,keyPressPublisher大敌;,,KeyEventPublisher ,keyUpPublisher大敌;,,,,KeyEventPublisher ,mouseDownPublisher大敌;,,MouseEventPublisher ,mouseUpPublisher大敌;,,,MouseEventPublisher ,mouseMovePublisher大敌;,,MouseEventPublisher ,mouseWheelPublisher大敌;,MouseEventPublisher ,,boundsChangedPublisher EventPublisher ,sizeChangedPublisher大敌;,EventPublisher ,,最大尺寸,,,,,,,大小 ,minSize大敌;,,,,,,,大小 ,,背景,,,,,,刷 ,光标大敌;,,,,,,,,光标 ,暂停大敌;,,,,,,保龄球 ,可见的大敌;,,,,,,,保龄球 ,启用大敌;,,,,,,,保龄球 ,name2Property大敌;,,,,mapstringProperty ,enabledProperty大敌;,,,财产 ,,enabledChangedPublisher EventPublisher ,visibleProperty大敌;,,,财产 ,,visibleChangedPublisher EventPublisher ,focusedProperty大敌;,,,财产 ,,focusedChangedPublisher EventPublisher ,calcTextSizeInfoPrev大敌;代码,calcTextSizeInfo 只列出了属性,没有列出方法。但也可以看出ui来这个库开放的接口非常少。而这走个库,该有的都有了,接口非常丰富。实现的控件非常多,甚至连webview都有,例子也丰富不少。 需要注意的这个库里面的控件是基于原生控件的,而不是自己绘制的 走使用 <代码类=" language-go "> ,,label1 label2 walkLabel ,,mv主窗口 ,,,标题大敌; ,,,,大小SizeWidth高度 ,,,,布局VBoxMarginsZero ,,,null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null
只列出了属性,没有列出方法。但也可以看出ui来这个库开放的接口非常少。而这走个库,该有的都有了,接口非常丰富。实现的控件非常多,甚至连webview都有,例子也丰富不少。
需要注意的这个库里面的控件是基于原生控件的,而不是自己绘制的
<代码类=" language-go "> ,,label1 label2 walkLabel ,,mv主窗口 ,,,标题大敌; ,,,,大小SizeWidth高度 ,,,,布局VBoxMarginsZero ,,,null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null