Socket and Tkinter Problem

Thomas Buschhardt thomas.buschhardt at iac-leipzig.de
Tue Jul 15 09:01:16 CEST 2003


Hallo,

I have a problem with Tkinter and the module socket. In a console-window
everything works fine, but in a Tkinter-window I can no more use the
widgets. I found some other mails with this problem, but no solution (I
understand really :-)

Here is my code:
-----------------------------------------------
import win32ui, dde, string, time, os, sys, shutil
from socket import *
from Tkinter import *
from tkFileDialog import *
from tkMessageBox import *
import win32com.client

def sockelserver():
    while 1:
        HOST = 'localhost'
        PORT = 8578
        s = socket(AF_INET, SOCK_STREAM)
        s.bind((HOST,PORT))
        s.listen(1)
        log("wait...")
        hs,addr=s.accept()
        log("connected with: "+str(addr))
        while 1:
            data=hs.recv(1024)
            if not data:break
            if data=="'exit'":break
            erg='hallo'
#     erg=datawash(data)
            log("reiceved: "+data)
            hs.send(erg)
        hs.close()
        if data=="'exit'":break

def log(nachricht):
    anzahl_lines=string.count(logtext.get(1.0,END),'\n')
    if anzahl_lines>2000:logtext.delete(0.0,2.0)
    logtext.insert(END,time.asctime()+'\t'+nachricht+'\n')
    logtext.see(END)
    root.update()

root = Tk()
midframe =Frame(root, borderwidth=2, relief=GROOVE)
Label(midframe,text='Logg-Fenster').pack(side=TOP)
scrollbar = Scrollbar(midframe, orient=VERTICAL)
scrollbar.pack(fill=Y, side=RIGHT)
logtext = Text(midframe)
logtext.pack()
logtext.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=logtext.yview)
midframe.pack(padx=2, pady=2)
botframe = Frame(root)
botframe.pack(padx=2, pady=2)
Button(botframe, text='Start',
command=sockelserver).pack(side=LEFT,padx=2,pady=2)
Button(botframe, text='Exit',
command=root.destroy).pack(side=LEFT,padx=2,pady=2)
root.title('DDE-Server')
root.mainloop()

--------------------------------------
The function is easy. I want to start a server that waits for connection and
answer with an result. The communication-protocol is printed out in a
Text-window.

Please help me out :-)
Cheers Thomas






More information about the Python-list mailing list