TCP Server + GUI in Python 1 Programm
Verfasst: Dienstag 12. Juni 2018, 16:17
Moin Python Experten^^,
habe eine kurze Frage. Habe in Python einen TCP Server geschrieben und ein GUI. Im Moment sind es 2 separate Programme. Möchte diese nun gerne zusammenführe. Nur leider futzt das nicht so wie gedacht. Entweder startet der Server und sobald dieser geschlossen wird das GUI oder umgekehrt. Das GUI wurde mit Tkinter geschrieben. Würde mich über Lösungsansätze freuen ^^
Der Server :
import socket
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip = socket.gethostbyname(socket.gethostname())
port = 1234
address = (ip,port)
server.bind(address)
server.listen(1)
print ("[*] Looking for Connection ",ip,":",port)
client,addr = server.accept()
print ("[*] Connection from ",addr[0],":",addr[1])
while True:
data = client.recv(1024)
print ("[*] Received",data," from client")
print ("[*] Processing data")
if(data==b"Hello Server"):
client.send(b"Hello client")
print ("Processing done.\n[*] Replay sent")
elif(data==b"disconnect"):
client.send(b"Goodbye")
client.close()
break
else:
client.send(b"Invalid data")
print ("Processing Invalid data.\n[*] Replay sent")
Das GUI :
from tkinter import*
import random
import time
import tkinter as tk
#Window Construction
root=Tk()
root.geometry("400x200")
root.title("Light v.1")
root.resizable(False, False)
#Variable Section
BG = Frame(root,width=400,height=200)
BG.pack(side=TOP)
Panel1 = Frame(root,width=200,height=100)
Panel1.pack(side=LEFT)
Info=Label(BG,font=('arial',20,'bold'),text="Time Settings",fg="black",bd=10,anchor='w')
Info.grid(row=0,column=0)
#Clock Section
time_one=''
Info_Time=Label(BG,font=('arial',20,'bold'),fg="green",bd=10,anchor='w')
Info_Time.grid(row=1,column=0)
time_one=''
def update_Time():
global time_one
time_two=time.strftime('%H:%M:%S')
# Update String for Time
if time_two != time_one:
time_one = time_two
Info_Time.config(text=time_two)
#Calling every 200ms
Info_Time.after(200, update_Time)
update_Time()
#Entry Section
Display1=Entry(Panel1,font=('comic sans',10,'bold'))
Display1.grid(row=1,column=1)
Display2=Entry(Panel1,font=('arial',10,'bold'))
Display2.grid(row=1,column=2)
Display3=Entry(Panel1,font=('arial',10,'bold'))
Display3.grid(row=2,column=1)
Display4=Entry(Panel1,font=('arial',10,'bold'))
Display4.grid(row=2,column=2)
#Text Section
Text1=Label(Panel1,text="Von").grid(row=1,column=0)
Text2=Label(Panel1,text="Bis").grid(row=2,column=0)
Text_Min=Label(Panel1,text="Stunden").grid(row=0,column=1)
Text_Min=Label(Panel1,text="Minuten").grid(row=0,column=2)
#Button Section
def getInput():
A=int(Display1.get())
B=Display2.get()
C=Display3.get()
D=Display4.get()
print(A,B,C,D)
global operator
operator=[A,B,C,D]
b1= Button(BG,text="Apply",command=getInput).grid(row=3)
root.mainloop()
habe eine kurze Frage. Habe in Python einen TCP Server geschrieben und ein GUI. Im Moment sind es 2 separate Programme. Möchte diese nun gerne zusammenführe. Nur leider futzt das nicht so wie gedacht. Entweder startet der Server und sobald dieser geschlossen wird das GUI oder umgekehrt. Das GUI wurde mit Tkinter geschrieben. Würde mich über Lösungsansätze freuen ^^
Der Server :
import socket
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip = socket.gethostbyname(socket.gethostname())
port = 1234
address = (ip,port)
server.bind(address)
server.listen(1)
print ("[*] Looking for Connection ",ip,":",port)
client,addr = server.accept()
print ("[*] Connection from ",addr[0],":",addr[1])
while True:
data = client.recv(1024)
print ("[*] Received",data," from client")
print ("[*] Processing data")
if(data==b"Hello Server"):
client.send(b"Hello client")
print ("Processing done.\n[*] Replay sent")
elif(data==b"disconnect"):
client.send(b"Goodbye")
client.close()
break
else:
client.send(b"Invalid data")
print ("Processing Invalid data.\n[*] Replay sent")
Das GUI :
from tkinter import*
import random
import time
import tkinter as tk
#Window Construction
root=Tk()
root.geometry("400x200")
root.title("Light v.1")
root.resizable(False, False)
#Variable Section
BG = Frame(root,width=400,height=200)
BG.pack(side=TOP)
Panel1 = Frame(root,width=200,height=100)
Panel1.pack(side=LEFT)
Info=Label(BG,font=('arial',20,'bold'),text="Time Settings",fg="black",bd=10,anchor='w')
Info.grid(row=0,column=0)
#Clock Section
time_one=''
Info_Time=Label(BG,font=('arial',20,'bold'),fg="green",bd=10,anchor='w')
Info_Time.grid(row=1,column=0)
time_one=''
def update_Time():
global time_one
time_two=time.strftime('%H:%M:%S')
# Update String for Time
if time_two != time_one:
time_one = time_two
Info_Time.config(text=time_two)
#Calling every 200ms
Info_Time.after(200, update_Time)
update_Time()
#Entry Section
Display1=Entry(Panel1,font=('comic sans',10,'bold'))
Display1.grid(row=1,column=1)
Display2=Entry(Panel1,font=('arial',10,'bold'))
Display2.grid(row=1,column=2)
Display3=Entry(Panel1,font=('arial',10,'bold'))
Display3.grid(row=2,column=1)
Display4=Entry(Panel1,font=('arial',10,'bold'))
Display4.grid(row=2,column=2)
#Text Section
Text1=Label(Panel1,text="Von").grid(row=1,column=0)
Text2=Label(Panel1,text="Bis").grid(row=2,column=0)
Text_Min=Label(Panel1,text="Stunden").grid(row=0,column=1)
Text_Min=Label(Panel1,text="Minuten").grid(row=0,column=2)
#Button Section
def getInput():
A=int(Display1.get())
B=Display2.get()
C=Display3.get()
D=Display4.get()
print(A,B,C,D)
global operator
operator=[A,B,C,D]
b1= Button(BG,text="Apply",command=getInput).grid(row=3)
root.mainloop()