将 dataReceived(从 Twisted)写入 tkinter texxtbox
Writing dataReceived (from Twisted) to a tkinter texxtbox
好的,所以我确定这应该比实际情况更简单,但是...
基本上,我有一个扭曲的反应器在特定端口上监听。我还有一个包含文本框的 tkinter 表单。我想做的只是将收到的数据写入该文本框。
以下是我目前所拥有的:
from twisted.web import proxy, http
from twisted.internet import reactor
from twisted.python import log
import ScrolledText
import sys
#Gui stuff
from Tkinter import *
import ttk
import Tkinter as tk
from ScrolledText import *
import tkMessageBox
from twisted.internet import tksupport
root = Tk()
class MyProxy(proxy.Proxy):
def dataReceived(self, data):
print data
textfield.delete(0,END)
textfield.insert(0, data)
textfield.pack()
return proxy.Proxy.dataReceived(self, data)
class ProxyFactory(http.HTTPFactory):
protocol=MyProxy
def guiLoop():
print "[+] Drawing GUI"
menubar = Menu(root)
connectMenu = Menu(menubar, tearoff=0)
connectMenu.add_command(label="Help")
connectMenu.add_command(label="About")
menubar.add_cascade(label="Proxy", menu=connectMenu)
root.minsize(300,300)
root.geometry("500x500")
root.textfield = ScrolledText()
root.textfield.pack()
#top = Tk()
root.title("Proxy")
root.config(menu=menubar)
tksupport.install(root)
def main():
#runReactor()
factory = ProxyFactory()
reactor.listenTCP(8080, factory)
reactor.callLater(0, guiLoop)
print "[+] Starting Reactor"
reactor.run()
if __name__ == "__main__":
main()
我环顾四周,但似乎没有明确的方法说明如何从不同的函数写入文本框。
没什么特别的——您只需要对小部件的引用,或调用具有对小部件的引用的函数。
由于 root
是全局的,而文本小部件是 root
的属性,您应该可以执行以下操作:
root.textfield.delete("1.0", "end")
root.textfield.insert("1.0", data)
好的,所以我确定这应该比实际情况更简单,但是... 基本上,我有一个扭曲的反应器在特定端口上监听。我还有一个包含文本框的 tkinter 表单。我想做的只是将收到的数据写入该文本框。
以下是我目前所拥有的:
from twisted.web import proxy, http
from twisted.internet import reactor
from twisted.python import log
import ScrolledText
import sys
#Gui stuff
from Tkinter import *
import ttk
import Tkinter as tk
from ScrolledText import *
import tkMessageBox
from twisted.internet import tksupport
root = Tk()
class MyProxy(proxy.Proxy):
def dataReceived(self, data):
print data
textfield.delete(0,END)
textfield.insert(0, data)
textfield.pack()
return proxy.Proxy.dataReceived(self, data)
class ProxyFactory(http.HTTPFactory):
protocol=MyProxy
def guiLoop():
print "[+] Drawing GUI"
menubar = Menu(root)
connectMenu = Menu(menubar, tearoff=0)
connectMenu.add_command(label="Help")
connectMenu.add_command(label="About")
menubar.add_cascade(label="Proxy", menu=connectMenu)
root.minsize(300,300)
root.geometry("500x500")
root.textfield = ScrolledText()
root.textfield.pack()
#top = Tk()
root.title("Proxy")
root.config(menu=menubar)
tksupport.install(root)
def main():
#runReactor()
factory = ProxyFactory()
reactor.listenTCP(8080, factory)
reactor.callLater(0, guiLoop)
print "[+] Starting Reactor"
reactor.run()
if __name__ == "__main__":
main()
我环顾四周,但似乎没有明确的方法说明如何从不同的函数写入文本框。
没什么特别的——您只需要对小部件的引用,或调用具有对小部件的引用的函数。
由于 root
是全局的,而文本小部件是 root
的属性,您应该可以执行以下操作:
root.textfield.delete("1.0", "end")
root.textfield.insert("1.0", data)