[python-de] Prob. mit TK

Peter Funk pf at artcom0.north.de
Thu Dec 10 08:52:01 EST 1998


Status: O

Hallo Thomas!

Zu Deinem Beispiel-Skript habe ich folgende sechs Anmerkungen:  
* Alle Tasten-Events gehen erstmal an das Widget 'master', solange
  Du nicht irgendwie mit Focus herum hantierst.
* Die bei 'bind' angegebenen Methoden müssen einen Parameter haben,
  der beim Aufruf mit dem Event-Objekt belegt wird.  Sollen diesselben
  Methoden wie in Deinem Beispiel außerdem als Button-Callbacks benutzt 
  werden, bietet sich die Vorbelegung dieses Parameters mit 'None' an.
* Der Suchpfad auf 'python' sollte nicht fest verdrahtet sein, da
  der python-Interpreter nicht überall in /usr/local/bin steht.
* Die Schreibweise 'from PiPaPo import *' ist nicht empfehlenswert, da 
  es die Lesbarkeit erschwert, sobald die Programme größer werden.  Man 
  sollte Namen aus externen Moduln grundsätzlich qualifiziert benutzen.
* In Deinem Beispiel fehlten in der Funktion 'quit' hinter dem wohl
  beabsichtigten Aufruf von 'frame.quit' die Klammern.  Das ist in
  Python kein Fehler, da auch das Objekt selbst ein gültiges Statement
  ist.  Aber dadurch wird das Objekt nicht aufgerufen, so daß nicht
  das passiert, was Du beabsichtigt hattest.
Ändert man Dein Skript entsprechend dieser Anmerkungen, sieht
es wie folgt aus (und funktioniert dann hier unter Linux mit
python 1.5.1 wohl auch so, wie Du es beabsichtigt hast):
---- 8< ---- 8< ---- cut here ---- 8< ---- schnipp ---- 8< ---- schnapp ----
#!/usr/bin/env python

import Tkinter; Tk=Tkinter; del Tkinter

master=Tk.Tk()

frame=Tk.Frame(master, bg="red")

button=Tk.Button(frame, text="ESC\nQuit", fg="red", command=frame.quit)
button.pack(side=Tk.LEFT)

def say_hi(ev=None):
        print "hallo Ihr !"
	print "Dies ist der Event:", ev

def quit(ev=None):
        print "Hier geht´s raus "
        frame.quit()

hi_there1=Tk.Button(frame, text="F1\nHallo", command=say_hi)
hi_there1.pack(fill=Tk.BOTH, expand=1)

master.bind("<Escape>", quit)
master.bind("<F1>", say_hi)
frame.pack()
master.mainloop()
---- 8< ---- 8< ---- cut here ---- 8< ---- schnipp ---- 8< ---- schnapp ----

Hoffentlich war das jetzt nicht zu "oberlehrerhaft"? ;-p

Gruß, Peter
-- 
Peter Funk, Oldenburger Str.86, 27777 Ganderkesee, Tel: 04222 9502 70, Fax: -60
Wer sich zu wichtig für kleine Arbeiten hält,
ist meist zu klein für wichtige Arbeiten.     --      Jacques Tati



__________________________________________________
Python-de Liste  -  python-de at starship.skyport.net
http://starship.skyport.net/mailman/listinfo/python-de




More information about the Python-de mailing list