#!/usr/bin/env python3 import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk, GLib class PromptWindow(Gtk.Window): def __init__(self, task=None): if task is None: task = "" self.orig_task = task Gtk.Window.__init__(self, title="Pomodoro Prompt") self.set_size_request(500, 100) self.set_border_width(10) # This is needed to end the thread if the dialog is closed with the X. self.connect("destroy", Gtk.main_quit) vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10) self.add(vbox) self.entry = Gtk.Entry() self.entry.set_text(self.orig_task) self.entry.connect("activate", self.save) vbox.pack_start(self.entry, True, True, 0) hbox = Gtk.Box(spacing=6) self.button_ok = Gtk.Button.new_with_label("OK") self.button_ok.connect("clicked", self.save) hbox.pack_start(self.button_ok, True, True, 0) if task: self.button_reset = Gtk.Button.new_with_label("Reset") self.button_reset.connect("clicked", self.reset) hbox.pack_start(self.button_reset, True, True, 0) vbox.pack_start(hbox, True, True, 0) # self.set_title("Entry") def save(self, item): # Note: item is the entry directly if enter is pressed, but the button # (i guess) if the button is pressed, so we do not use it. self.task = self.entry.get_text() # A little concerned this might be sort of the nuclear option here. Gtk.main_quit() def reset(self, item): self.entry.set_text(self.orig_task) def retrieve(self): return self.task win = PromptWindow() win.show_all() Gtk.main() tha_task = win.retrieve() print(tha_task)