Můj program jsem webový server creator s UI a chci dostat data z Text
třídy v tkinter balíčku a vrátit ji na baňky serveru, ale Program ukazuje, dvojitá Okna a baňky server ukazuje, nic.
try:
import sys
import platform
from flask import Flask
from typing import List
from time import strftime
from datetime import date
from subprocess import run
from webbrowser import open
from consts import CONST_COLORS
from builtins import (str , int ,Exception)
from tkinter import font
from tkinter.tix import Button
from tkinter.ttk import (Label , Entry , Notebook , Frame , Combobox)
from tkinter.__init__ import (Tk , StringVar , Text)
from tkinter.constants import (RAISED , FLAT , BOTH , CENTER , RIDGE , END)
from http.server import (BaseHTTPRequestHandler , HTTPServer)
except:
raise Exception
class WebServerCreationClass:
def __init__(self) -> str:
self.root = Tk()
self.root.title("WebServer Creator")
self.root.geometry("{0}x{1}".format(350 , 550))
self.root.resizable(0 , 0)
self.root.config(bg = CONST_COLORS[0][0] , cursor = None)
self.tabDashboard = Notebook(master = self.root)
self.firstTab = Frame(self.tabDashboard)
self.secondTab = Frame(self.tabDashboard)
self.outputTab = Frame(self.tabDashboard)
self.svEntryPort = StringVar(self.firstTab)
self.svOptionChs = StringVar(self.firstTab)
self.flaskServer = Flask(__name__)
self.defaultHost : str = "localhost"
self.defaultPort : int = 8080
self.getTime = strftime("%H:%M:%S %p")
self.optionChoices : List[str] = [
"Python http Server" ,
"Django Server" ,
"Flask Server" ,
"Nginx" ,
"Ngrok" ,
"Default (localhost)"
]
self.svEntryPort.set(self.defaultPort)
self.svOptionChs.set(self.optionChoices[2])
@self.flaskServer.route('/')
def ClickEventButton():
newText = self.textToTemplate.get(1.0 , END)
return f"{newText}"
def ButtonEventClicker():
ClickEventButton()
try:
self.flaskServer.debug = True
self.flaskServer.run(
host = "0.0.0.0" ,
port = 8080
)
except Exception:
pass
self.tabDashboard.add(
child = self.firstTab ,
text = "Config"
)
self.tabDashboard.add(
child = self.secondTab ,
text = "Mode"
)
self.tabDashboard.add(
child = self.outputTab ,
text = "Output/Terminal"
)
self.firstTabLabel = Label(
master = self.firstTab ,
text = None ,
background = CONST_COLORS[0][0] ,
width = 82
)
self.labelPort = Label(
master = self.firstTab ,
text = "Port :" ,
background = CONST_COLORS[0][0] ,
foreground = CONST_COLORS[0][1] ,
font = ("Vani" , 22 , font.BOLD) ,
relief = FLAT
)
self.labelServer = Label(
master = self.firstTab ,
text = "Server :" ,
background = CONST_COLORS[0][0] ,
foreground = CONST_COLORS[0][1] ,
font = ("Vani" , 22 , font.BOLD) ,
relief = FLAT
)
self.secondTabLabel = Label(
master = self.secondTab ,
text = None ,
background = CONST_COLORS[0][0] ,
width = 82
)
self.outputtabLabel = Label(
master = self.outputTab ,
text = None ,
background = CONST_COLORS[0][0] ,
width = 82
)
self.entryPort = Entry(
master = self.firstTab ,
textvariable = self.svEntryPort ,
background = CONST_COLORS[0][1] ,
foreground = CONST_COLORS[0][0] ,
font = ("Vani" , 13 , font.BOLD) ,
justify = CENTER ,
width = 25
)
self.optionSelect = Combobox(
master = self.firstTab ,
textvariable = self.svOptionChs ,
values = self.optionChoices ,
font = ("Vani" , 13 , font.BOLD) ,
justify = CENTER
)
self.htmlLabel = Label(
master = self.firstTab ,
text = "HTML" ,
background = CONST_COLORS[0][0] ,
foreground = CONST_COLORS[0][1] ,
font = ("Vani" , 22 , font.BOLD) ,
relief = RIDGE ,
borderwidth = 8 ,
width = 12 ,
justify = CENTER
)
self.textToTemplate = Text(
master = self.firstTab ,
width = 36
)
self.outputTerminal = Text(
master = self.outputTab ,
width = 43 ,
font = ("Courier" , 15 , font.BOLD) ,
background = CONST_COLORS[0][3] ,
foreground = CONST_COLORS[0][2]
)
self.outputTerminal.insert(1.0 , f"Date : {date.today()}\nTime : {self.getTime}")
self.createServerButton = Button(
master = self.firstTab ,
text = "Create Server" ,
command = ButtonEventClicker ,
bg = CONST_COLORS[0][4] ,
fg = CONST_COLORS[0][1] ,
font = ("Vani" , 15 , font.BOLD) ,
relief = RAISED ,
bd = 5
)
self.tabDashboard.pack(
expand = 1 ,
fill = BOTH
)
self.firstTabLabel.place(
x = 0 ,
y = 0 ,
height = 600
)
self.secondTabLabel.place(
x = 0 ,
y = 0 ,
height = 600
)
self.outputtabLabel.place(
x = 0 ,
y = 0 ,
height = 600
)
self.labelPort.place(
x = 0 ,
y = 0
)
self.labelServer.place(
x = 0 ,
y = 60
)
self.entryPort.place(
x = 90 ,
y = 8
)
self.optionSelect.place(
x = 120 ,
y = 68
)
self.createServerButton.place(
x = 100 ,
y = 450
)
self.htmlLabel.place(
x = 78 ,
y = 110
)
self.textToTemplate.place(
x = 25 ,
y = 160 ,
height = 275
)
self.outputTerminal.place(
x = 0 ,
y = 0 ,
height = 524
)
self.htmlLabel.configure(anchor = CENTER)
self.root.mainloop()
# if (platform.system()[0].upper() == "W"):
# WebServerCreationClass()
# else:
# sys.exit(0)
if __name__ == "__main__":
WebServerCreationClass()
a to je consts.py
from typing import (Dict , List)
from builtins import (int , str)
CONST_COLORS : List[Dict[int , str]] = [
{
0 : "#1D2934" ,
1 : "#ffffff" ,
2 : "#00C300" ,
3 : "#000000" ,
4 : "#33485B"
}
]