Hi everyone, I am using a python socket server to collect data from a socket client and then control a image location ( wxpython) with the data, i.e. moving the image around in the wxpython frame. But the "app.MainLoop()" in wxpython looks like conflicting with the "while 1:" in socket server. After I commented the "app.MainLoop()", everything is working except two things: 1. if I click anywhere on the screen with the mouse, the image is gong and only the empty frame( or panel) is left. 2. if I don't touch anything, the image is being moved around but the previous images are left behind in the panel. I guess that may be caused by "app.MainLoop()" commented. Anybody knows how to make the two things work together? I really appreciate your help. My sample code is modified based on the wxpython demo: image.py. socket client is also attached for your reference.
Ouyang ################ socket server with wxpython ############## from Main import opj import wx,string class MMCS(wx.Frame): def __init__(self): self.bmp = wx.Image(opj('bitmaps/image.bmp'), wx.BITMAP_TYPE_BMP) self.bmp.SetMask(True) wx.Frame.__init__(self, parent=None, title='monitoring system', size=(500,600)) self.panel = wx.Panel(self,-1) def monitor(self,x,y,angle): bmp = self.bmp.Rotate(angle, (x,y), True,None) bmp = bmp.ConvertToBitmap() wx.StaticBitmap(self.panel, -1, bmp, (x, y), (bmp.GetWidth(), bmp.GetHeight())) del bmp app = wx.PySimpleApp() frame = MMCS() frame.Show() frame.monitor(50,10,0.0) #app.MainLoop() # Server program from socket import * # Set the socket parameters host = "192.168.0.2" port = 21567 buf = 1024 addr = (host,port) # Create socket and bind to address UDPSock = socket(AF_INET,SOCK_DGRAM) UDPSock.bind(addr) # Receive messages while 1: data,addr = UDPSock.recvfrom(buf) if not data: print "Client has exited!" break else: print "\nReceived message '", data,"'" d = string.split(data, '-') frame.monitor(string.atoi(d[0]),string.atoi(d[1]),string.atof(d[2])) if data == 'END': print "end of moving the ship" # Close socket UDPSock.close() ############# socket client ######################> rom socket import * import time # Set the socket parameters host = "192.168.0.2" port = 21567 buf = 1024 addr = (host,port) # Create socket UDPSock = socket(AF_INET,SOCK_DGRAM) def_msg = "===Enter message to send to server==="; print "\n",def_msg # Send messages while (1): for i in range(100): time.sleep(1) data = "50-100-%s"%(0.1*i) if(UDPSock.sendto(data,addr)): print "Sending message '",data,"'....." # Close socket UDPSock.close() -- http://mail.python.org/mailman/listinfo/python-list