So sieht sie aus:

Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
"""
******************************************************************************
* Description: Zeigt eine Inputbox an und gibt die Eingabe zurück.
* Requirements: Python 2.x: http://www.python.org
* GTK+ 2.0: http://www.gtk.org
* pyGtk: http://www.pygtk.org/downloads.html
******************************************************************************
"""
import sys
import pygtk
pygtk.require("2.0")
import gtk
stdout_coding = sys.stdout.encoding or sys.getfilesystemencoding()
#----------------------------------------------------------------------
def inputbox(
title = u"Inputbox",
description = u"My inputbox...",
defaultvalue = u""
):
"""
Zeigt ein Fenster zum Eingeben eines Textes an
"""
# Dialog
dialog = gtk.Dialog(title = title)
dialog.set_modal(True)
dialog.set_position(gtk.WIN_POS_CENTER)
dialog.set_border_width(6)
dialog.set_has_separator(False)
dialog.set_resizable(False)
# Buttons
cancel_button = dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
ok_button = dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
ok_button.set_flags(gtk.CAN_DEFAULT)
ok_button.grab_default()
ok_button.set_sensitive(False)
# Label
label = gtk.Label(description)
label.set_line_wrap(True)
#label.set_use_markup(True)
dialog.vbox.pack_start(label, True, True, 0)
label.show()
# Textbox
entry = gtk.Entry()
dialog.vbox.pack_start(entry, True, True, 8)
def entry_key_release_event(widget, event, data = None):
if widget.get_text() == "":
ok_button.set_property("sensitive", False)
else:
ok_button.set_property("sensitive", True)
if event.hardware_keycode == 13:
dialog.response(gtk.RESPONSE_OK)
entry.connect("key-release-event", entry_key_release_event)
if defaultvalue:
entry.set_text(defaultvalue)
ok_button.set_sensitive(True)
entry.show()
# Anzeigen und zurück geben
if dialog.run() == gtk.RESPONSE_OK:
retval = entry.get_text()
dialog.destroy()
return retval
else:
return ""
#----------------------------------------------------------------------
def main():
"""
Hauptfunktion zum Testen
"""
retval = inputbox(
title = u"Das ist der Titel",
description = u"Bitte gib etwas ein...",
defaultvalue = u"Standardwert"
)
print retval.encode(stdout_coding)
#----------------------------------------------------------------------
if __name__ == "__main__":
main()
Gerold
