#!/usr/bin/env python3 # This code taken from: # http://stackoverflow.com/questions/8290740/simple-versatile-and-re-usable-entry-dialog-sometimes-referred-to-as-input-dia import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk as gtk class EntryDialog(gtk.MessageDialog): def __init__(self, *args, **kwargs): ''' Creates a new EntryDialog. Takes all the arguments of the usual MessageDialog constructor plus one optional named argument "default_value" to specify the initial contents of the entry. ''' if 'default_value' in kwargs: default_value = kwargs['default_value'] del kwargs['default_value'] else: default_value = '' super(EntryDialog, self).__init__(*args, **kwargs) entry = gtk.Entry() entry.set_text(str(default_value)) entry.connect("activate", lambda ent, dlg, resp: dlg.response(resp), self, gtk.ResponseType.OK) self.vbox.pack_end(entry, True, True, 0) self.vbox.show_all() self.entry = entry def set_value(self, text): self.entry.set_text(text) def run(self): result = super(EntryDialog, self).run() if result == gtk.ResponseType.OK: text = self.entry.get_text() else: text = None return text