Created
April 3, 2015 11:44
-
-
Save MarkusHackspacher/35a5aa81a73f1f3fc0a3 to your computer and use it in GitHub Desktop.
Python Webserver GUI
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/python | |
# -*- coding: utf-8 -*- | |
""" | |
Webserver für Python | |
03.01.2014 MH Quelltext für Python 2.7 und 3.x | |
30.05.2013 MH Quelltext nach PEP8 überprüft | |
http://creativecommons.org/licenses/by-nc-sa/3.0/de/ | |
""" | |
try: | |
import Tkinter as tk | |
except ImportError: | |
import tkinter as tk | |
try: | |
import tkinter.scrolledtext as tkscrolledtext | |
except ImportError: | |
import ScrolledText as tkscrolledtext | |
try: | |
import tkinter.filedialog as tkfiledialog | |
except ImportError: | |
import tkFileDialog as tkfiledialog | |
try: | |
import http.server as httpserver | |
except ImportError: | |
import SimpleHTTPServer as httpserver | |
try: | |
import socketserver as socketserver | |
except ImportError: | |
import SocketServer as socketserver | |
try: | |
import _thread as thread | |
except ImportError: | |
import thread as thread | |
import os | |
def st_server(): | |
"""Start server""" | |
while True: | |
httpd.handle_request() | |
class Application(tk.Frame): | |
def verz(self): | |
#select and change directory | |
verzeichnis = tkfiledialog.askdirectory( | |
title='Auswahl des Web-Rootverzeichnis') | |
self.text.insert('end', verzeichnis) | |
self.text.insert('end', "\n") | |
if verzeichnis != '': | |
os.chdir(verzeichnis) | |
def start_server(self): | |
thread.start_new_thread(st_server, ()) | |
self.start.config(state='disabled') | |
self.text.insert('end', "Server gestartet mit PORT: {}\n".format(PORT)) | |
def createWidgets(self): | |
"""create GUI Tkinter""" | |
#select directory | |
self.verzeich = tk.Button(self) | |
self.verzeich["text"] = "Startverzeichnis" | |
self.verzeich["command"] = self.verz | |
self.verzeich.pack({"side": "top", "fill": "x"}) | |
#start server | |
self.start = tk.Button(self) | |
self.start["text"] = "Startserver" | |
self.start["fg"] = "green" | |
self.start["command"] = self.start_server | |
self.start.pack({"side": "top", "fill": "x"}) | |
#exit | |
self.QUIT = tk.Button(self) | |
self.QUIT["text"] = "Ende" | |
self.QUIT["fg"] = "red" | |
self.QUIT["command"] = self.quit | |
self.QUIT.pack({"side": "top", "fill": "x"}) | |
#Information | |
self.lab = tk.Label(self, text="Informationen") | |
self.lab.pack({"side": "top"}) | |
self.text = tkscrolledtext.ScrolledText(self) | |
self.text["width"] = 40 | |
self.text["height"] = 5 | |
self.text.pack({"side": "left"}) | |
def __init__(self, master=None): | |
tk.Frame.__init__(self, master) | |
self.pack(expand='yes') | |
self.createWidgets() | |
PORT = 8080 | |
Handler = httpserver.SimpleHTTPRequestHandler | |
httpd = socketserver.TCPServer(("", PORT), Handler) | |
root = tk.Tk() | |
root.title("Webserver mit Python") | |
app = Application(master=root) | |
app.mainloop(){/code} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment