Gotk4的 NewMessageDialog不支持message_format参数

编程语言 2026-07-09

我使用 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 GrafuGo 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) } ```

当然,所有功劳都归于他,请记得是他发布了这个答案。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章