in meinem code funktioniert alles wie es soll.
ich möchte aber auch das programm schließen und erneut ausführen können.
beim zweiten start allerdings funktioniert der StringVar start_Client nicht mehr.
jede hilfe ist mir willkommen
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import Tkinter
from Tkinter import *
import threading
import socket
import datetime
import json
from Tkinter import Tk, StringVar, Label
def run():
backwin = Tkinter.Tk()
backwin.title('DMD-DATA.soft')
backwin.state('zoomed')
backwin.configure(background='black')
start_Server = Tkinter.StringVar()
l_sf1 = Tkinter.Label(backwin,textvariable=(start_Server),font=('Arial', 8, 'bold'), height=2, width=25, fg="#000000000",justify='left')
l_sf1.place(relx=.06, rely=.97, anchor="c")
#-----------------
start_Client = Tkinter.StringVar()
#-----------------
l_sf2 = Tkinter.Label(backwin,textvariable=(start_Client),font=('Arial', 8, 'bold'), height=2, width=35, fg="#000000000",justify=LEFT)
l_sf2.place(relx=.2, rely=.97, anchor="c")
get_IP = [TCP_IP for TCP_IP in socket.gethostbyname_ex(socket.gethostname())[2] if not TCP_IP.startswith("127.")][:1]
TCP_PORT = 9090
server_address = ((TCP_IP,TCP_PORT))
def server_Start(backwin,server_address):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_address = ((TCP_IP,TCP_PORT))
sock.bind(server_address)
messageServer = "Server gestartet: "+str(TCP_IP)
start_Server.set(str(messageServer))
sock.listen(5)
while True:
client,addr = sock.accept()
now = datetime.datetime.now()
currentTime = now.strftime("%d.%m.%Y, %H:%M:%S")
client.send("\n---> DMD-Server ("+str(currentTime)+")\n")
data = client.recv(25000)
json_data = json.loads(data)
user = json_data['User']
messageClient = "\n---> "+str(user)+" ("+str(currentTime)+")\n"
start_Client.set(str(messageClient))
#print json_data
client.close()
sock.close()
event = threading.Event()
new_thread = threading.Thread(target=server_Start,args=(backwin,server_address,))
new_thread.start()
def beenden(event):
event.set()
backwin.destroy()
try:
backwin.destroy()
except:
pass
b = Tkinter.Button(backwin, text=("\nBEENDEN\n"), font=('Arial', 10, 'bold'), width=20, relief="raised", borderwidth=3, fg='#000000000', justify='center',command=lambda:beenden(event))
b.place(relx=.51, rely=.82, anchor="c")
backwin.mainloop()
run()