在Tkinter按钮Python的回调函数中运行永久的TCP服务器

时间:2018-07-10 11:51:50

标签: python tcpserver

我是Python的新手,并且正在从事我的本科项目。 最近,我已经用 socketserver 在Python中成功实现了一个始终运行的TCP服务器。该服务器可以永远运行,并等待来自cli的请求。下面是我的代码:

import SocketServer
class MyTCPHandler(SocketServer.BaseRequestHandler):
        def handle(self):
        # self.request is the TCP socket connected to the client
        self.data = self.request.recv(1024).strip()
        print "{} wrote:".format(self.client_address[0])
        print self.data
        # just send back the same data, but upper-cased
        self.request.sendall(self.data.upper()

#start the TCP server and keep it run forever until click stop button
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever()

Rightnow,我开始使用GUI(即Tkinter)创建对话框板。我创建了一个对话框,上面有一个确定按钮。我只想在用户单击“确定”按钮时启动始终运行的TCP服务器。下面是我的对话框代码:

import tkinter
master = tkinter.Tk()
e = tkinter.Entry(master)
e.pack()
e.focus_set()

def callback():
      print (e.get()) # This is the text you may want to use later
      master.destroy()

b = tkinter.Button(master, text ="OK", width = 10, command = callback) 
b.pack()
tkinter.mainloop()

我试图将启动服务器代码(如下)放入按钮的 Callback 函数中,但是服务器只能运行一次,然后才能执行。

 #start the TCP server and keep it run forever until click stop button
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever()

任何人都可以帮助我,如何在单击按钮后启动服务器并使服务器永久运行?

非常感谢您

0 个答案:

没有答案