Tkinter Absturz bei MouseWheel-Event

Fragen zu Tkinter.
Antworten
dahaze
User
Beiträge: 75
Registriert: Freitag 13. März 2009, 10:57
Wohnort: im Schwabenland

Hallo Tkinter-Cracks! :wink:

Ich habe hier einen Fehler den ich mir nicht erklären kann.
Unten aufgeführter Beispielcode führt bei manchen PCs zum Absturz, bei anderen nicht.

Code: Alles auswählen

import Tkinter

root = Tkinter.Tk()
field = Tkinter.Label(root, bg='white', text='0')
field.grid(row=0, column=0, sticky='nsew')
a = 0

def do_something(*event):
  global a
  a += 1
  field.configure(text=a)

root.bind('<MouseWheel>', do_something)
root.mainloop()
Auch bei PCs mit gleicher Hardwarekonfiguration ist das Ergebnis unterschiedlich!

Fehlerldung:

Bild Bild

Python: v2.2
Tk: v8.3

Gibts/gabs hierzu vielleicht einen Bug in Tk v8.3 oder ist es generell verboten Bindings an ein Root-Widget zu machen?
Hintergrund des Bindings direkt an das Root-Window ist es, ein Event generell abfangen zu können ohne dass ein bestimmtes Widget aktiv sein muss.

Ich hoffe ihr könnt mir weiterhelfen!

Gruß,
DaHaze
Zuletzt geändert von dahaze am Freitag 12. März 2010, 17:45, insgesamt 1-mal geändert.
dahaze
User
Beiträge: 75
Registriert: Freitag 13. März 2009, 10:57
Wohnort: im Schwabenland

Guten Morgen zusammen!

Hat niemand eine Idee oder Vermutung? :cry:
Oder ist die Lösung so einfach, dass ich einfach den Wald vor lauter Bäumen nicht mehr seh? :wink:

Ich habe mittlerweile festgestellt, dass bei einem Fehler, die an das Mausrad-Event gebundene Methode nicht einmal aufgerufen wird.
Bsp:
Ändert man die Methode in...

Code: Alles auswählen

def do_something(*event):
  print 'und jetzt kommt das event'
  global a
  a += 1
  field.configure(text=a)
...kommt es bei einem Fehler nicht einmal zum print.

Gruß,
dahaze
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo dahaze

Habe dein(e) Skripts unter SuSE11.0 und Windows Vista ausprobiert. Die erwähntes Problem tauchte bei mir nicht auf.

Was ist dein?:
OS
Python Version
Tk Version

Der Stern vor dem Parameter 'event' ist nicht nötig.

Gruß wuf :wink:
Take it easy Mates!
dahaze
User
Beiträge: 75
Registriert: Freitag 13. März 2009, 10:57
Wohnort: im Schwabenland

Hallo Wuf!

Danke für die Antwort.

OS: Microsoft Windows XP [Version 5.1.2600]
Tk v8.3
Python v2.2

Den "*" hab ich mal entfernt hat aber - wie erwartet - nix geändert. :wink:
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

dahaze hat geschrieben:Hat niemand eine Idee oder Vermutung?
Kurzes googeln liefert z.B. das hier: http://www.mail-archive.com/python-bugs ... 00556.html

Demnach bist du nicht der einzige, der damit Ärger hat(te), aber es könnte zumindest sein, dass es mit aktuellem Python/Tkinter nicht mehr auftritt ... :)
dahaze
User
Beiträge: 75
Registriert: Freitag 13. März 2009, 10:57
Wohnort: im Schwabenland

Ahh...super!
...oder auch eher nicht.... :wink:

Irgendwie bin ich darauf nicht gestoßen! :roll:

Naja, dann scheints wohl echt ein Bug in TK v8.3 zu sein! :?
Hier das offizielle Ticket aus dem TK-Bugtracker: http://sourceforge.net/tracker/index.ph ... tid=112997

Gefixed ab Tk v8.4....

Gruß,
dahaze
dahaze
User
Beiträge: 75
Registriert: Freitag 13. März 2009, 10:57
Wohnort: im Schwabenland

Da ich leider an TK8.3 gebunden bin, habe ich mich weiter auf die Suche gemacht und noch eine Möglichkeit für einen Bugfix in der Tkinter.py gefunden.
Also wer auch unter TK8.3 und Windows das Mausrad benutzen will, dem wird hiermit geholfen:
http://mail.python.org/pipermail/python ... 28768.html

Funktioniert einwandfrei. :wink:

gruß,
Simon
Antworten