不能起风

2024-04-20 02:45:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python制作一个基本的聊天客户端,但是它无法打开窗口。当服务器线程启动时,它似乎冻结了。我正在使用socketserver模块。你知道吗

class ChatClient(Frame):
    def CreateWidgets(self):
        self.whoislist = Label(self,text = '')
        def updateWhoIs(peopleList):
            finishlist = 'People:'
            for person in peopleList:
                finishlist += ('\n' + person)
            self.whoislist.config(text = finishlist)
        self.whoislist.grid(row = 1, columnspan = 7)
        self.mainchat = Text(self)
        self.mainchat.grid(columnspan = 5, rowspan = 3, row = 2, column = 3)
    peeps = []
    def __init__(self,master = None):
        Frame.__init__(self,master)
        self.grid()
        self.CreateWidgets()
        print('Huh.')
        self.server = socketserver.TCPServer(('127.0.0.1',1337),MyTCPHandler)
        self.sthread = Thread(target = self.server.serve_forever())
        self.sthread.start()
        print('Yay')

Tags: textselfinitdefframegridpersonrow
1条回答
网友
1楼 · 发布于 2024-04-20 02:45:45

在初始化线程时调用self.server.serve_forever(),将其返回值设置为线程的目标,但是顾名思义:它将永远存在。而是指定方法(不调用它)作为目标:

self.sthread = Thread(target = self.server.serve_forever)

而且它应该工作,尽管要小心MyTCPHandler如何与Tk应用程序交互,因为tkinter不是线程安全的。你知道吗

相关问题 更多 >