如何在PyGTK中设置默认按钮?

6 投票
1 回答
5200 浏览
提问于 2025-04-15 12:50

我有一个非常简单的窗口,里面有两个按钮——一个是取消按钮,一个是应用按钮。我想把应用按钮设置为默认按钮,也就是说,当我按下回车键时,应用按钮会被点击。

不过,我还想把焦点放在第一个输入框上(我不能在按钮上使用grab_focus()这个方法)。

有什么建议吗?

编辑:wuub的回答之后,视觉效果看起来不错。但是,当我在其他控件上按按钮时,默认按钮的回调函数并没有被触发。

示例代码:

import os, sys, pygtk, gtk 

def run(button, window):
    dialog = gtk.MessageDialog(window, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, "OK")
    dialog.run()
    dialog.destroy()

window = gtk.Window()
window.connect("destroy", gtk.main_quit)

vbox = gtk.VBox(spacing = 10)
entry = gtk.Entry()
vbox.pack_start(entry)

button = gtk.Button(stock = gtk.STOCK_SAVE)
button.connect("clicked", run, window)
button.set_flags(gtk.CAN_DEFAULT)
window.set_default(button)
vbox.pack_start(button)

window.add(vbox)
window.show_all()
gtk.main()

编辑2:每个可以激活默认控件的输入都必须被运行。

widget.set_activates_default(True)

1 个回答

4

这是两个链接,分别指向关于PyGTK的文档。PyGTK是一个用来创建图形用户界面的工具,主要用于Python编程。

第一个链接是关于“gtkdialog”的,它有一个方法叫“set-default-response”。这个方法的作用是设置对话框的默认响应,也就是说,当用户按下回车键时,系统会自动选择这个默认的选项。

第二个链接是关于“gtkwindow”的,它有一个方法叫“set-default”。这个方法用于设置窗口的默认行为,比如在某些情况下,窗口应该如何响应用户的操作。

撰写回答