| #! /usr/bin/env python | 
 |  | 
 | # www9.py -- display the contents of a URL in a Text widget | 
 | # - set window title | 
 | # - make window resizable | 
 | # - update display while reading | 
 | # - vertical scroll bar | 
 | # - rewritten as class | 
 |  | 
 | import sys | 
 | import urllib | 
 | from Tkinter import * | 
 |  | 
 | def main(): | 
 | 	if len(sys.argv) != 2 or sys.argv[1][:1] == '-': | 
 | 		print "Usage:", sys.argv[0], "url" | 
 | 		sys.exit(2) | 
 | 	url = sys.argv[1] | 
 | 	viewer = Viewer() | 
 | 	viewer.load(url) | 
 | 	viewer.go() | 
 |  | 
 | class Viewer: | 
 |  | 
 | 	def __init__(self): | 
 | 		# Create root window | 
 | 		self.root = Tk() | 
 | 		self.root.minsize(1, 1) | 
 |  | 
 | 		# The Scrollbar *must* be created first | 
 | 		self.vbar = Scrollbar(self.root) | 
 | 		self.vbar.pack({'fill': 'y', 'side': 'right'}) | 
 | 		self.text = Text(self.root) | 
 | 		self.text.pack({'expand': 1, 'fill': 'both', 'side': 'left'}) | 
 |  | 
 | 		# Link Text widget and Scrollbar | 
 | 		self.text['yscrollcommand'] = (self.vbar, 'set') | 
 | 		self.vbar['command'] = (self.text, 'yview') | 
 |  | 
 | 	def load(self, url): | 
 | 		# Load a new URL into the window | 
 | 		fp = urllib.urlopen(url) | 
 |  | 
 | 		self.root.title(url) | 
 |  | 
 | 		self.text.delete('0.0', 'end') | 
 |  | 
 | 		while 1: | 
 | 			line = fp.readline() | 
 | 			if not line: break | 
 | 			self.text.insert('end', line) | 
 | 			self.root.update_idletasks() | 
 |  | 
 | 		fp.close() | 
 |  | 
 | 	def go(self): | 
 | 		# Start Tk main loop | 
 | 		self.root.mainloop() | 
 |  | 
 | main() |