Python中的GTK3对话框,Gtk.Entry上的"输入密钥"应该触发OK按钮

Bjö*_*örn 7 python gtk gtk3

我有以下用Gtk3用Python编写的代码.

from gi.repository import Gtk

class DialogTaskDescription(Gtk.Dialog):

    def __init__(self):
        Gtk.Dialog.__init__(self, "Create ToDo.txt Entry", 0, 0,
            (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
             Gtk.STOCK_OK, Gtk.ResponseType.OK))

        self.set_default_size(150, 100)

        hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=6)

        self.label = Gtk.Label("Task Description:")
        self.taskDescription = Gtk.Entry()
        hbox.pack_start(self.label, False, True, 0)
        hbox.pack_start(self.taskDescription, True, True, 0)

        box = self.get_content_area()
        box.add(hbox)
        self.show_all()

    def getTaskDescription(self):
        return self.taskDescription.get_text()

class TaskDescription:

    def __init__(self):
        self.dialog = DialogTaskDescription()

    def getTaskDescription(self):
        response = self.dialog.run()
        taskDescription = ''

        if response == Gtk.ResponseType.OK:
            taskDescription = self.dialog.getTaskDescription()

        self.dialog.destroy()

        return taskDescription
Run Code Online (Sandbox Code Playgroud)

现在,如果用户按下"taskDescription"输入字段上的回车键,我想触发单击"确定"按钮.知道我怎么能这样做吗?非常感谢!

编辑:

我找到了一个解决方案......不确定它是否应该这样做,但是这样可行:

我在DialogTaskDescription()的init方法中添加了以下行:

# enter key should trigger the default action
self.taskDescription.set_activates_default(True)

# make OK button the default
okButton = self.get_widget_for_response(response_id=Gtk.ResponseType.OK)
okButton.set_can_default(True)
okButton.grab_default()
Run Code Online (Sandbox Code Playgroud)

Jac*_*din 4

我找到了一个解决方案...不确定这是否应该这样做,但这有效:

我在 DialogTaskDescription() 的 init 方法中添加了以下几行:

# enter key should trigger the default action
self.taskDescription.set_activates_default(True)

# make OK button the default
okButton = self.get_widget_for_response(response_id=Gtk.ResponseType.OK)
okButton.set_can_default(True)
okButton.grab_default()
Run Code Online (Sandbox Code Playgroud)