Simple, versatile and re-usable entry dialog (sometimes referred to as input dialog) in PyGTK

前端 未结 3 466
天涯浪人
天涯浪人 2020-12-11 18:57

I am searching for a simple dialog with a text entry widget asking the user for some input. The dialog should be easy to run (like the gtk.MessageDialog variant

3条回答
  •  天涯浪人
    2020-12-11 19:30

    Here's the function I wrote, based on the previous answers here. It's a function instead of a class, which means you can use it in one line.

    def get_text(parent, message, default=''):
        """
        Display a dialog with a text entry.
        Returns the text, or None if canceled.
        """
        d = gtk.MessageDialog(parent,
                              gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                              gtk.MESSAGE_QUESTION,
                              gtk.BUTTONS_OK_CANCEL,
                              message)
        entry = gtk.Entry()
        entry.set_text(default)
        entry.show()
        d.vbox.pack_end(entry)
        entry.connect('activate', lambda _: d.response(gtk.RESPONSE_OK))
        d.set_default_response(gtk.RESPONSE_OK)
    
        r = d.run()
        text = entry.get_text().decode('utf8')
        d.destroy()
        if r == gtk.RESPONSE_OK:
            return text
        else:
            return None
    

提交回复
热议问题