#3018: tkinter demo fixes for py3k.
diff --git a/Demo/tkinter/guido/MimeViewer.py b/Demo/tkinter/guido/MimeViewer.py
index b957c85..babed8f 100755
--- a/Demo/tkinter/guido/MimeViewer.py
+++ b/Demo/tkinter/guido/MimeViewer.py
@@ -3,11 +3,27 @@
 # View a single MIME multipart message.
 # Display each part as a box.
 
-import string
-from types import *
+import os
+import sys
+import getopt
+import mailbox
 from tkinter import *
 from tkinter.scrolledtext import ScrolledText
 
+MBOXPATH = os.environ['HOME'] + '/Mail'
+
+class Error(Exception):
+    pass
+
+def getcurrent(self):
+    """Return the current message.  Raise Error when there is none."""
+    seqs = self.get_sequences()
+    try:
+        return max(seqs['cur'])
+    except (ValueError, KeyError):
+        raise Error("no cur message")
+
+
 class MimeViewer:
     def __init__(self, parent, title, msg):
         self.title = title
@@ -18,8 +34,10 @@
                              {'text': title,
                               'command': self.toggle})
         self.button.pack({'anchor': 'w'})
-        headertext = msg.getheadertext(
-                lambda x: x != 'received' and x[:5] != 'x400-')
+        headertext = []
+        for item in msg.items():
+            headertext.append("%s: %s" % item)
+        headertext = '\n'.join(headertext)
         height = countlines(headertext, 4)
         if height:
             self.htext = ScrolledText(self.frame,
@@ -38,8 +56,8 @@
                                   'ipady': 2,
                                   'fill': 'x',
                                   'after': self.button}
-        body = msg.getbody()
-        if type(body) == StringType:
+        body = msg.get_payload()
+        if type(body) == str:
             self.pad = None
             height = countlines(body, 10)
             if height:
@@ -102,16 +120,13 @@
     i = 0
     n = 0
     while  n < limit:
-        i = string.find(str, '\n', i)
+        i = str.find('\n', i)
         if i < 0: break
         n = n+1
         i = i+1
     return n
 
 def main():
-    import sys
-    import getopt
-    import mhlib
     opts, args = getopt.getopt(sys.argv[1:], '')
     for o, a in opts:
         pass
@@ -121,13 +136,13 @@
         if arg[:1] == '+':
             folder = arg[1:]
         else:
-            message = string.atoi(arg)
+            message = int(arg)
 
-    mh = mhlib.MH()
-    f = mh.openfolder(folder)
-    if not message:
-        message = f.getcurrent()
-    m = f.openmessage(message)
+    mh = mailbox.MH(MBOXPATH)
+    f = mh.get_folder(folder)
+    if message is None:
+        message = getcurrent(f)
+    m = mailbox.MHMessage(f.get(message))
 
     root = Tk()
     tk = root.tk
@@ -140,4 +155,5 @@
 
     tk.mainloop()
 
-if __name__ == '__main__': main()
+if __name__ == '__main__':
+    main()