package main import ( "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/canvas" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/dialog" "fyne.io/fyne/v2/layout" "fyne.io/fyne/v2/widget" "golang.org/x/image/colornames" ) func main() { myApp := app.New() myWindow := myApp.NewWindow("封面获取器") myWindow.Resize(fyne.NewSize(640, 480)) // 创建显示框 sourceDirLabel := widget.NewLabel("未选择") targetDirLabel := widget.NewLabel("未选择") displayBoxInfo := canvas.NewText("", colornames.Blue) // 创建目录选择框 selectSourceDir := widget.NewButton("选择作品存放目录", func() { dialog.ShowFolderOpen(func(uri fyne.ListableURI, err error) { if err != nil { sourceDirLabel.SetText("选择目录失败: " + err.Error()) return } if uri != nil { sourceDirLabel.SetText(uri.Path()) } }, myWindow) }) selectTargetDir := widget.NewButton("选择输出目录", func() { dialog.ShowFolderOpen(func(uri fyne.ListableURI, err error) { if err != nil { targetDirLabel.SetText("选择目录失败: " + err.Error()) return } if uri != nil { targetDirLabel.SetText(uri.Path()) } }, myWindow) }) // 创建主布局 content := container.NewVBox( container.NewHBox(selectSourceDir, sourceDirLabel), container.NewHBox(selectTargetDir, targetDirLabel), container.NewCenter(displayBoxInfo), layout.NewSpacer(), container.NewCenter( widget.NewButton("开始处理", func() { displayBoxInfo.Text = "处理中..." displayBoxInfo.Color = colornames.Blue displayBoxInfo.Refresh() crawler := NewCrawler(sourceDirLabel.Text, targetDirLabel.Text) if err := crawler.Handle(); err != nil { displayBoxInfo.Text = "处理失败: " + err.Error() displayBoxInfo.Color = colornames.Red } else { displayBoxInfo.Text = "处理完成" displayBoxInfo.Color = colornames.Green } displayBoxInfo.Refresh() }), ), ) myWindow.SetContent(content) myWindow.ShowAndRun() }