Python 我可以使用带UDP接收器的扭曲GTK反应器吗?

Python 我可以使用带UDP接收器的扭曲GTK反应器吗?,python,gtk,twisted,Python,Gtk,Twisted,我想添加UDP接收器: from twisted.internet.protocol import DatagramProtocol from twisted.internet import reactor class UDP(DatagramProtocol): def datagramReceived(self, data, (host, port)): #Receive a string "X Y" and add to plot. print "Rec

我想添加UDP接收器:

from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor

class UDP(DatagramProtocol):

    def datagramReceived(self, data, (host, port)):
    #Receive a string "X Y" and add to plot.    
    print "Received %r from %s:%d" % (data, host, port)

reactor.listenUDP(9999, UDP())
reactor.run()
对于使用GTKReactor的现有matplotlib代码:

from matplotlib import use
use('GTK')
from matplotlib import pyplot
from matplotlib.backends import backend_gtk
from twisted.internet import gtk2reactor
gtk2reactor.install()

from twisted.internet import reactor, task

class TwistedGtkShow(backend_gtk.Show):
    running = False
    def mainloop(self):
        if not self.running:
            self.running = True
            reactor.run()

def onclick(event):
  print 'Clicked: %d, X=%d, Y=%d, Xdata=%f, Ydata=%f' % (event.button, event.x, event.y, event.xdata, event.ydata)

def onpress(event):
  print "Pressed: ", event.key


def main():
    fig = pyplot.figure()
    pyplot.plot([1,2,3,4])
    pyplot.ylabel('Numbers')

    cid = fig.canvas.mpl_connect('button_press_event', onclick)
    cid = fig.canvas.mpl_connect('key_press_event', onpress)

    def proof():
        print 'Twisted!'
    task.LoopingCall(proof).start(3)

    TwistedGtkShow()()

if __name__ == '__main__':
    main()
但他们都没有阻拦?如何运行它们并更新绘图、响应单击事件以及可能发送回UDP数据包?

添加它

您需要注意的是不要调用
reactor.run()
两次
reactor.run()
是Twisted中的阻塞API(它会阻塞,直到程序结束)