changes by Barry, e.g. font lock & email addresses
[python/dscho.git] / Demo / tkinter / www / www9.py
blob60b46ed885c5a2e48ce93e855f5602ac93280741
1 #! /usr/local/bin/python
3 # www9.py -- display the contents of a URL in a Text widget
4 # - set window title
5 # - make window resizable
6 # - update display while reading
7 # - vertical scroll bar
8 # - rewritten as class
10 import sys
11 import urllib
12 from Tkinter import *
14 def main():
15 if len(sys.argv) != 2 or sys.argv[1][:1] == '-':
16 print "Usage:", sys.argv[0], "url"
17 sys.exit(2)
18 url = sys.argv[1]
19 viewer = Viewer()
20 viewer.load(url)
21 viewer.go()
23 class Viewer:
25 def __init__(self):
26 # Create root window
27 self.root = Tk()
28 self.root.minsize(1, 1)
30 # The Scrollbar *must* be created first
31 self.vbar = Scrollbar(self.root)
32 self.vbar.pack({'fill': 'y', 'side': 'right'})
33 self.text = Text(self.root)
34 self.text.pack({'expand': 1, 'fill': 'both', 'side': 'left'})
36 # Link Text widget and Scrollbar
37 self.text['yscrollcommand'] = (self.vbar, 'set')
38 self.vbar['command'] = (self.text, 'yview')
40 def load(self, url):
41 # Load a new URL into the window
42 fp = urllib.urlopen(url)
44 self.root.title(url)
46 self.text.delete('0.0', 'end')
48 while 1:
49 line = fp.readline()
50 if not line: break
51 self.text.insert('end', line)
52 self.root.update_idletasks()
54 fp.close()
56 def go(self):
57 # Start Tk main loop
58 self.root.mainloop()
60 main()