--- Lib/lib-tk/Tkinter.py~ 2003-01-18 10:19:58.000000000 +0100 +++ Lib/lib-tk/Tkinter.py 2003-03-21 20:10:10.000000000 +0100 @@ -1028,34 +1028,77 @@ 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 e.serial = getint(nsign) - e.num = getint(b) + # number of button: ButtonPress and ButtonRelease events only + try: + e.num = getint(b) + except ValueError: + e.num = b try: e.focus = getboolean(f) except TclError: pass - e.height = getint(h) - e.keycode = getint(k) + # height field: Configure, ConfigureRequest, Create, ResizeRequest, + # and Expose events only + try: + e.height = getint(h) + except ValueError: + e.height = h + # keycode field: KeyPress and KeyRelease events only + try: + e.keycode = getint(k) + except ValueError: + e.keycode = 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) + # time field: "valid for events that contain a time field" + try: + e.time = getint(t) + except ValueError: + e.time = t + # width field: Configure, ConfigureRequest, Create, ResizeRequest, + # and Expose events only + try: + e.width = getint(w) + except ValueError: + e.width = w + # x field: "valid for events that contain a x field" + try: + e.x = getint(x) + except ValueError: + e.x = x + # y field: "valid for events that contain a y field" + try: + e.y = getint(y) + except ValueError: + e.y = y e.char = A try: e.send_event = getboolean(E) except TclError: pass e.keysym = K - e.keysym_num = getint(N) + # keysym as decimal: KeyPress and KeyRelease events only + try: + e.keysum_num = getint(N) + except ValueError: + e.keysum_num = 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) + # x_root, y_root fields: ButtonPress, ButtonRelease, KeyPress, + # KeyRelease,and Motion events + try: + e.x_root = getint(X) + except ValueError: + e.x_root = X + try: + e.y_root = getint(Y) + except ValueError: + e.y_root = Y try: e.delta = getint(D) except ValueError: