Golang使用Fyne创建菜单时遇到cannot use fileMenuItem1 as string value错误
Golang使用Fyne创建菜单时遇到cannot use fileMenuItem1 as string value错误 以下是我用于测试 Fyne 的代码。
package userinterface
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
)
func Uirender() {
myApp := app.New()
myWindow := myApp.NewWindow("Hello World")
// 创建菜单项
fileMenuItem1 := fyne.NewMenuItem("File 1", nil)
// 创建一个菜单并将菜单项添加到其中
fileMenu := fyne.NewMenu(
fileMenuItem1,
)
// 创建一个菜单栏并将菜单设置到其中
mainMenu := fyne.NewMainMenu(
fileMenu,
)
// 将菜单栏设置为窗口的主菜单
myWindow.SetMainMenu(mainMenu)
// 为窗口创建简单的内容
content := container.NewVBox(
widget.NewLabel("Hello World!"),
)
// 设置窗口的内容
myWindow.SetContent(content)
// 显示窗口并运行应用程序
myWindow.ShowAndRun()
}
以下是错误信息。
cannot use fileMenuItem1 (variable of type *fyne.MenuItem) as string value in argument to fyne.NewMenu
我在谷歌上没怎么看到关于 Fyne 的这个错误,所以我想在这里问一下。
更多关于Golang使用Fyne创建菜单时遇到cannot use fileMenuItem1 as string value错误的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于Golang使用Fyne创建菜单时遇到cannot use fileMenuItem1 as string value错误的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
错误原因是fyne.NewMenu的第一个参数应该是菜单名称(字符串),而不是*fyne.MenuItem。菜单项应该通过Items字段添加。
以下是修正后的代码:
package userinterface
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
)
func Uirender() {
myApp := app.New()
myWindow := myApp.NewWindow("Hello World")
// 创建菜单项
fileMenuItem1 := fyne.NewMenuItem("File 1", nil)
// 创建菜单,第一个参数是菜单名称,第二个参数是菜单项切片
fileMenu := fyne.NewMenu(
"File", // 菜单名称
fileMenuItem1,
)
// 创建主菜单
mainMenu := fyne.NewMainMenu(
fileMenu,
)
// 将菜单栏设置为窗口的主菜单
myWindow.SetMainMenu(mainMenu)
// 为窗口创建简单的内容
content := container.NewVBox(
widget.NewLabel("Hello World!"),
)
// 设置窗口的内容
myWindow.SetContent(content)
// 显示窗口并运行应用程序
myWindow.ShowAndRun()
}
关键修改:
fyne.NewMenu的第一个参数必须是字符串类型的菜单名称- 后续参数才是菜单项(
*fyne.MenuItem) - 如果需要添加多个菜单项,可以这样写:
fileMenu := fyne.NewMenu(
"File",
fyne.NewMenuItem("New", nil),
fyne.NewMenuItem("Open", nil),
fyne.NewMenuItemSeparator(),
fyne.NewMenuItem("Exit", func() {
myApp.Quit()
}),
)
这样就能正确创建菜单结构了。

