Created
September 27, 2009 21:07
-
-
Save alcides/195010 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: Latin-1 -*- | |
# importações gerais | |
import sys, Tkinter, thread, cgi, webbrowser | |
from os import curdir, sep | |
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer | |
# o programa pode ser chamado com um argumento que será a porta onde irá correr o servidor web. | |
if len(sys.argv) > 1: | |
try: | |
port = int(sys.argv[1]) | |
except: | |
port = 1337 | |
else: | |
port=1337 | |
def openServer(port): | |
"Função para iniciar o servidor web" | |
global server | |
server = HTTPServer(('', port), WebHandler) | |
gui.listBox.insert("end", "+ starting webserver...") | |
server.serve_forever() | |
class WebHandler(BaseHTTPRequestHandler): | |
pass # removidas cenas que não interessam. | |
class GUI: | |
"Class para a Janela do servidor web (com registo)" | |
def __init__(self, window): | |
self.window = window | |
import Tkinter | |
self.server_frm = Tkinter.Frame(window) | |
self.title_lbl = Tkinter.Label(self.server_frm, text='Servidor XPTO \n http://127.0.0.1:' + str(port) + "/") | |
self.open_btn = Tkinter.Button(self.server_frm, | |
text='Abrir Browser', command=self.open) | |
self.quit_btn = Tkinter.Button(self.server_frm, | |
text='Parar', command=self.quit) | |
self.window.title('WebServer') | |
self.window.protocol('WM_DELETE_WINDOW', self.quit) | |
self.title_lbl.pack(side='top', fill='x') | |
self.open_btn.pack(side='left', fill='x', expand=1) | |
self.quit_btn.pack(side='right', fill='x', expand=1) | |
self.server_frm.pack(side='top', fill='x') | |
font = ('helvetica', sys.platform == 'win32' and 8 or 10) | |
listFrame = Tkinter.Frame(window) | |
listFrame.pack(side='top', padx=1, pady=1, fill='x') | |
scrollBar = Tkinter.Scrollbar(listFrame) | |
scrollBar.pack(side='right', fill='y') | |
self.listBox = Tkinter.Listbox(listFrame, selectmode='single', width=200) | |
self.listBox.pack(side='right', fill='both') | |
scrollBar.config(command=self.listBox.yview) | |
self.listBox.config(yscrollcommand=scrollBar.set) | |
self.window.update() | |
self.expanded = 0 | |
self.window.wm_geometry('%dx%d' % (400, 200)) | |
self.window.wm_minsize(200, 60) | |
self.window.tk.willdispatch() | |
def open(self, event=None, url=None): | |
"Método para abrir o endereço no browser" | |
url = "http://127.0.0.1:" + str(port) + "/" | |
webbrowser.open(url) | |
def quit(self, event=None): | |
"Método para fechar o programa" | |
server.socket.close() | |
root.destroy() | |
sys.exit(0) | |
if __name__ == '__main__': | |
#Iniciar janela e servidor em threads separadas. | |
root = Tkinter.Tk() | |
gui = GUI(root) | |
thread.start_new_thread(openServer, (port,)) | |
root.mainloop() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment