热身:go语言windows gui界面开发之walk 改错

文章描述了一个Go程序在使用walk库创建窗口时遇到的闪退问题。通过分析,作者发现原因是layout对象未初始化。解决方案是在main函数中添加一行代码初始化layout,即`window.SetLayout(walk.NewVBoxLayout())`,这能有效防止服务挂起,确保窗口正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果其他文章发现服务跑不起来,出现闪退,可以参考本文,请看到最后。
编译和环境问题点我解决

第一步 直接上代码

package main
 
import (
    "syscall"
 
    "github.com/lxn/walk"
    "github.com/lxn/win"
)
 
func main() {
    window, _ := walk.NewMainWindow()
 
    // 设置窗体标题
    window.SetTitle(“hello world”)
 
    // 设置窗体的宽高
    window.SetWidth(800)
    window.SetHeight(800)
 
    // 设置窗体生成在屏幕的正中间
    // 窗体横坐标 = ( 屏幕宽度 - 窗体宽度 ) / 2
    // 窗体纵坐标 = ( 屏幕高度 - 窗体高度 ) / 2
    window.SetX((int(win.GetSystemMetrics(0)) - window.Width()) / 2)
    window.SetY((int(win.GetSystemMetrics(1)) - window.Height()) / 2)
 
    // 设置窗体为显示状态(默认:隐藏状态)
    window.Show()
 
    // 运行窗体
    window.Run()
}

第二步 运行first.exe查看效果

最终效果图
至此完成

问题:其实此时运行不起来,会出现窗口闪退,这也是网上其他帖子的问题

原因:通过定位分析,发现是调用walk库内部layout对象方法时layout为nil,导致服务挂了;
解决:在main函数中 第一行代码之后增加代码 window.SetLayout(walk.NewVBoxLayout()),初始化layout,即可解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘帝阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值