--- 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:
