TCP를 통해 다른 컴퓨터에서 명령을 받으면 배경색을 변경하는 간단한 프로그램에 문제가 있습니다. 창 위로 마우스를 움직일 때만 배경이 업데이트됩니다. 로컬 네트워크를 통해이를 실행하고 있으므로 즉시 대응해야합니다. 프레임에 wxPython을 사용하고 있습니다. 지나치게 복잡한 코드가 있다고 생각하지 않습니다. 관련 코드 :이 객체가 너무 가까이있는 경우 알려드립니다 로봇에 갈 것 같은wxPython TxtCtrl 상자 배경이 업데이트되지 않습니까?
threader=threading.Thread(target=self.threading)
threader.start()
def threading(self):
host="192.168.1.122"
port=4100
s=socket.socket()
s.bind((host,port))
s.listen(1)
c,addr=s.accept()
print "Connected"
while 1:
data=c.recv(1024)
if not data:
break
data=data.split("_")
reading=int(data[1])
pin=int(data[0])
if pin == 1:
if reading<20:
self.front_left.SetBackgroundColour("red")
elif pin == 2:
if reading<20:
self.front_right.SetBackgroundColour("red")
elif pin == 3:
if reading<20:
self.bottom_left.SetBackgroundColour("red")
elif pin == 4:
if reading<20:
self.bottom_right.SetBackgroundColour("red")
else:
pass
c.close()
나는 즉시로이 코드가 필요합니다 (이는이 개체의 20cm 이내에 도착 빨간색 배경이 이유) . 어떤 도움이라도 대단히 감사하겠습니다!
[wxPython wiki [(http://wiki.wxpython.org/MainLoopAsThread)] 명시 적으로 GUI가 메인 스레드에서만 호출 될 수 있다고 명시되어 있습니다. 그렇지 않으면 스레드 안전 방식을 사용해야합니다. 특정 경우에''wx.CallAfter''가 가장 간단하고 최선의 접근 방식이 될 것입니다. – nepix32