Gotk4的 NewMessageDialog不支持message_format参数
我使用 github.com/diamondburned/gotk4/pkg/gtk/v4。我想创建一个模态对话框,如下所示:
dialog := gtk.NewMessageDialog(
&window.Window,
gtk.DialogModal|gtk.DialogDestroyWithParent,
gtk.MessageInfo,
gtk.ButtonsOK,
"Some info I want to let the user know",
)
dialog.SetTitle("Information")
dialog.SetVisible(true)
不过,NewMessageDialog() 的声明是这样的:
func gtk.NewMessageDialog(parent *gtk.Window, flags gtk.DialogFlags, typ gtk.MessageType, buttons gtk.ButtonsType) *gtk.MessageDialog
与C 函数 gtk_message_dialog_new() 不同,Go的这个没有 message_format 参数,也没有 ...(用于 message_format 的参数)。
我的问题是:如何在Go中创建一个信息对话框,只包含一个标题、一个正文和一个按钮?
解决方案
Viorel Grafu 在 Go Forums 上回答道:
```golang package main
import ( "os"
"github.com/diamondburned/gotk4/pkg/gio/v2" "github.com/diamondburned/gotk4/pkg/gtk/v4" )
func main() { var flags gio.ApplicationFlags app := gtk.NewApplication("com.example.dialog", flags)
app.ConnectActivate(func() { window := gtk.NewApplicationWindow(app) window.SetTitle("MyApp") window.SetDefaultSize(400, 200)
button := gtk.NewButtonWithLabel("Show messagebox") button.ConnectClicked(func() { showInfoDialog(&window.Window) }) window.SetChild(button) window.SetVisible(true)})
os.Exit(app.Run(os.Args)) }
func showInfoDialog(parent *gtk.Window) { var dialogFlags gtk.DialogFlags dialogFlags |= gtk.DialogModal dialogFlags |= gtk.DialogDestroyWithParent
var msgType gtk.MessageType = gtk.MessageType(gtk.MessageInfo) var btnType gtk.ButtonsType = gtk.ButtonsType(gtk.ButtonsOK)
dialog := gtk.NewMessageDialog( parent, dialogFlags, msgType, btnType, ) dialog.SetTitle("Info") dialog.SetMarkup("Your message...")
area := dialog.MessageArea() if box, ok := area.(*gtk.Box); ok { lbl := gtk.NewLabel("Click OK to continue...") lbl.SetWrap(true) box.Append(lbl) }
dialog.ConnectResponse(func(responseID int) { dialog.Destroy() })
dialog.SetVisible(true) } ```
当然,所有功劳都归于他,请记得是他发布了这个答案。