麻烦大佬看看,请问一下用walk包编写windows窗口为什么会出现这种错误啊。。。最基本的空窗口都无法运行

aliacute · 2022-02-26 12:22:21 · 1130 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2022-02-26 12:22:21 的主题,其中的信息可能已经有所发展或是发生改变。

import (
    "fmt"
    "github.com/lxn/walk"
    "github.com/lxn/walk/declarative"
)

type Windows interface {
    ShowWindows()//展示窗体界面
}
//创建解压缩的界面类
type ComWindow struct{  // 窗口
    Windows
    *walk.MainWindow  //主窗体
}
type LabWindow struct{ // 信息显示
    Windows
}
func Show(windows_type string){
    var Win Windows
    switch windows_type {
    case "main_window":
        Win = new(ComWindow)
    case "lab_window":
        Win = &LabWindow{}
    default:
        fmt.Println("参数传递错误")
    }
    Win.ShowWindows()// 显示出来
}

func (comWindow *ComWindow) ShowWindows(){
    pathWindow := new(ComWindow)
    err:=declarative.MainWindow{
        AssignTo:&pathWindow.MainWindow,   //将ComWindow中的MainWindow的二级指针与declarative中的MainWindow相关联,关联主窗体
        Title:"文件压缩",   //窗口标题名称
        MaxSize:declarative.Size{480,230}, //MaxSize是一个结构体类型

    }.Create()//使用结构方法可以直接调用
    if err!= nil{
        fmt.Println(err)
    }
    //窗口的展示需要通过坐标来指定
    pathWindow.SetX(650)
    pathWindow.SetY(300)
    pathWindow.Run()  // 运行窗口,才能将创建的窗口展示出来
}
func main(){
    Show()    
}

下面是报错

Stack:
goroutine 1 [running, locked to thread]:
runtime/debug.Stack()
    D:/Go/src/runtime/debug/stack.go:24 +0x65
github.com/lxn/walk.newErr(...)
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/error.go:81
github.com/lxn/walk.newError({0x63c466, 0x12})
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/error.go:85 +0x27
github.com/lxn/walk.(*ToolTip).addTool(0x40aedd, 0x6907a8, 0x80)
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/tooltip.go:184 +0xb6
github.com/lxn/walk.(*ToolTip).AddTool(0xc0000a0080, {0x6907a8, 0xc000047180})
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/tooltip.go:160 +0x37
github.com/lxn/walk.(*WidgetBase).init(0xc000047180, {0xe47788, 0xc000047180})
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/widget.go:137 +0xbe
github.com/lxn/walk.initWindowWithCfg(0xc000074bd0)
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/window.go:670 +0x639
github.com/lxn/walk.InitWindow({0xe47788, 0xc000047180}, {0x68daf8, 0xc000009400}, {0x640f67, 0x6e}, 0x74c90, 0xc0)
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/window.go:538 +0xa5
github.com/lxn/walk.InitWidget({0x6907a8, 0xc000047180}, {0x68daf8, 0xc000009400}, {0x640f67, 0x1c}, 0x50000000, 0x0)
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/widget.go:110 +0xc5
github.com/lxn/walk.NewCompositeWithStyle({0x68daf8, 0xc000009400}, 0x0)
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/composite.go:30 +0xc5
github.com/lxn/walk.NewComposite({0x690198, 0xc000009400})
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/composite.go:45 +0x37
github.com/lxn/walk.(*FormBase).init(0xc000009400, {0xe47400, 0xc000009400})
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/form.go:107 +0x38
github.com/lxn/walk.initWindowWithCfg(0xc000074f50)
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/window.go:662 +0x5dd
github.com/lxn/walk.NewMainWindowWithCfg(0xc000075040)
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/mainwindow.go:48 +0x12b
github.com/lxn/walk/declarative.MainWindow.Create({{{0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, ...}, ...})
    C:/Users/Administrator/go/pkg/mod/github.com/lxn/walk@v0.0.0-20210112085537-c389da54e794/declarative/mainwindow.go:64 +0xfa
main.(*ComWindow).ShowWindows(0xc00000e480)
    D:/Go/awesomeProject/src/windows.go:40 +0xac
main.Show({0x63966f, 0xc00002c000})
    D:/Go/awesomeProject/src/windows.go:30 +0xdf
main.main()
    D:/Go/awesomeProject/src/main.go:6 +0x25

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x5b4b1f]

goroutine 1 [running, locked to thread]:
main.(*ComWindow).ShowWindows(0xc00000e480)
    D:/Go/awesomeProject/src/windows.go:45 +0xff
main.Show({0x63966f, 0xc00002c000})
    D:/Go/awesomeProject/src/windows.go:30 +0xdf
main.main()
    D:/Go/awesomeProject/src/main.go:6 +0x25

Process finished with exit code 2

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1130 次点击  
加入收藏 微博
3 回复  |  直到 2022-02-28 10:11:44
pluszero1982
pluszero1982 · #1 · 3年之前
pathWindow := new(ComWindow)

你对new 的用法有一定的误解

ws1992go
ws1992go · #2 · 3年之前

为什么要用 new() 呢? Java 写多了,对象需要先 new()。

Mericusta
Mericusta · #3 · 3年之前

panic: runtime error: invalid memory address or nil pointer dereference

这句能看懂吗?

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传