=================================================================== RCS file: /cvsroot/python/python/dist/src/Lib/lib-tk/Tkinter.py,v retrieving revision 1.160.10.2 retrieving revision 1.160.10.3 diff -u -r1.160.10.2 -r1.160.10.3 --- python/python/dist/src/Lib/lib-tk/Tkinter.py 2002/08/23 15:27:52 1.160.10.2 +++ python/python/dist/src/Lib/lib-tk/Tkinter.py 2003/03/29 09:48:12 1.160.10.3 @@ -1024,38 +1024,54 @@ """Internal function.""" if len(args) != len(self._subst_format): return args getboolean = self.tk.getboolean + getint = int + def getint_event(s): + """Tk changed behavior in 8.4.2, returning "??" rather more often.""" + try: + return int(s) + except ValueError: + return s + nsign, b, f, h, k, s, t, w, x, y, A, E, K, N, W, T, X, Y, D = args # Missing: (a, c, d, m, o, v, B, R) e = Event() + # serial field: valid vor all events + # number of button: ButtonPress and ButtonRelease events only + # height field: Configure, ConfigureRequest, Create, + # ResizeRequest, and Expose events only + # keycode field: KeyPress and KeyRelease events only + # time field: "valid for events that contain a time field" + # width field: Configure, ConfigureRequest, Create, ResizeRequest, + # and Expose events only + # x field: "valid for events that contain a x field" + # y field: "valid for events that contain a y field" + # keysym as decimal: KeyPress and KeyRelease events only + # x_root, y_root fields: ButtonPress, ButtonRelease, KeyPress, + # KeyRelease,and Motion events e.serial = getint(nsign) - e.num = getint(b) + e.num = getint_event(b) try: e.focus = getboolean(f) except TclError: pass - e.height = getint(h) - e.keycode = getint(k) - # For Visibility events, event state is a string and - # not an integer: - try: - e.state = getint(s) - except ValueError: - e.state = s - e.time = getint(t) - e.width = getint(w) - e.x = getint(x) - e.y = getint(y) + e.height = getint_event(h) + e.keycode = getint_event(k) + e.state = getint_event(s) + e.time = getint_event(t) + e.width = getint_event(w) + e.x = getint_event(x) + e.y = getint_event(y) e.char = A try: e.send_event = getboolean(E) except TclError: pass e.keysym = K - e.keysym_num = getint(N) + e.keysym_num = getint_event(N) e.type = T try: e.widget = self._nametowidget(W) except KeyError: e.widget = W - e.x_root = getint(X) - e.y_root = getint(Y) + e.x_root = getint_event(X) + e.y_root = getint_event(Y) try: e.delta = getint(D) except ValueError: