Vorwort: bis jetzt habe ich Qt + PySide für "Python mit GUI" genommen. Eben habe ich mir mal ein erstes Miniprogramm in Python + GTK zusammen gehackt:
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
import gtk
class Simpel(object):
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_title("Simpel GTK+")
self.window.set_default_size(200, 100)
self.window.connect("delete_event", self.event_delete)
self.window.connect("destroy", self.destroy)
vbox = gtk.VBox(False, 20)
self.eingabe = gtk.Entry()
self.eingabe.show()
vbox.pack_start(self.eingabe)
button = gtk.Button("Quadrieren")
button.connect("clicked", self.rechnen)
button.show()
vbox.pack_start(button)
self.label = gtk.Label("Ergebnis...")
self.label.show()
vbox.pack_start(self.label)
self.window.add(vbox)
vbox.show()
self.window.show()
def rechnen(self,data=None):
try:
wert = int(self.eingabe.get_text())
except:
text = 'Die Eingabe ist keine ganze Zahl!'
dialog = gtk.MessageDialog(
flags=gtk.DIALOG_MODAL,
buttons=gtk.BUTTONS_OK,
message_format=text)
dialog.set_title("Fehler!")
dialog.run()
dialog.destroy()
return
self.label.set_text(str(wert*wert))
return
def event_delete(self, widget, event, data=None):
return False
def destroy(self, data=None):
gtk.main_quit()
def main(self):
gtk.main()
if __name__ == "__main__":
e = Simpel()
e.main()
Die eigentlichen Fragen sind:
Sind "destroy" und "event_delete" Pflicht für jedes GTK-basierte Programme? Nicht, dass das schlimme wäre aber bei Qt ist es nicht notwendig.
Kennt GTK Validatoren für Eingabe, z.B. mit deren Hilfe man festlegen kann, dass "eingabe" nur Integer-Werte nimmt?
Sonstige Anmerkungen sind auch willkommen.
Gruß, noisefloor