Skip to content

Instantly share code, notes, and snippets.

@alcides
Created September 27, 2009 21:07
Show Gist options
  • Save alcides/195010 to your computer and use it in GitHub Desktop.
Save alcides/195010 to your computer and use it in GitHub Desktop.
#!/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