You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Python中Gtk.AlertDialog获取用户反馈的GTK4迁移实现示例

在Python中使用Gtk.AlertDialog替代Gtk.Dialog的实现方法

Gtk4中Gtk.Dialog已被弃用,Gtk.AlertDialog是官方推荐的替代方案,用于创建模态对话框获取用户反馈。以下是完整的Python实现示例,实现一个支持确认退出操作的对话框:

完整代码示例

import gi
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk

class AppWindow(Gtk.ApplicationWindow):
    def __init__(self, app):
        super().__init__(application=app, title="GTK4 AlertDialog示例")
        self.set_default_size(300, 200)

        # 创建触发按钮
        exit_btn = Gtk.Button(label="触发退出操作")
        exit_btn.connect("clicked", self.on_exit_triggered)
        self.set_child(exit_btn)

    async def on_exit_triggered(self, widget):
        # 初始化AlertDialog
        alert = Gtk.AlertDialog()
        alert.set_title("确认退出")
        alert.set_message("是否要终止当前操作并退出?")
        
        # 添加操作按钮,索引从0开始依次分配
        alert.add_button("确认退出")
        alert.add_button("继续操作")
        
        # 设置回车默认触发的按钮(索引1为"继续操作")
        alert.set_default_button(1)
        # 设置ESC键触发的取消按钮
        alert.set_cancel_button(1)

        # 显示对话框并等待用户响应
        response_idx = await alert.show(self)

        # 根据响应索引处理逻辑
        if response_idx == 0:
            # 用户选择确认,退出应用
            self.get_application().quit()
        else:
            # 用户选择取消,继续当前操作
            print("取消退出,继续当前操作")

class DemoApp(Gtk.Application):
    def __init__(self):
        super().__init__(application_id="com.example.AlertDialogDemo")

    def do_activate(self):
        window = AppWindow(self)
        window.present()

if __name__ == "__main__":
    app = DemoApp()
    app.run(None)

关键说明

  • 异步处理:Gtk.AlertDialog.show()是异步方法,需在async修饰的函数中使用await等待用户操作完成,这是GTK4推荐的交互方式。
  • 按钮索引规则:通过add_button添加的按钮按顺序分配索引(从0开始),show()方法返回用户点击的按钮索引,以此判断用户选择。
  • 快捷操作配置:set_default_button()设置回车默认触发的按钮,set_cancel_button()设置ESC键触发的按钮,提升操作便捷性。
  • 模态特性:对话框弹出时会阻塞父窗口交互,直到用户做出选择,确保操作的原子性。

内容的提问来源于stack exchange,提问作者kwksdy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 05:25:06