这段代码的pygame部分有什么问题?

2024-10-04 05:32:12 发布

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

每次我运行此程序时,pygame窗口都会冻结。 我正在使用windows。 除了pygame窗口弹出外,其他一切都正常工作。请帮忙! 我已经看到这里的一些帖子建议使用pygame.event.get(),但它对我不起作用

class DriveDataHandler(socketserver.BaseRequestHandler):
class VideoStreamHandler(socketserver.StreamRequestHandler):   
class Server(object):
    def __init__(self, host, port1,port3):
        self.host = host
        self.port1 = port1
        #self.port2 = port2
        self.port3 = port3

        pygame.init()
        pygame.display.set_mode((250, 250))
    def video_stream(self, host, port):
        s = socketserver.TCPServer((host, port), VideoStreamHandler)
        s.serve_forever()
    def sensor_stream(self, host, port):
        s = socketserver.TCPServer((host, port), SensorDataHandler)
        s.serve_forever()
    def drive_stream(self, host, port):

        s = socketserver.TCPServer((host, port), DriveDataHandler)
        s.serve_forever()
    def start(self):

f __name__ == '__main__':
    h, p1, p3 = "127.0.1.1", 8000, 8004

    ts = Server(h, p1, p3)
    ts.start()

Tags: selfhoststreamportdefpygameclassserve
1条回答
网友
1楼 · 发布于 2024-10-04 05:32:12

class Server(object):
    def __init__(self, host, port1,port3):
        self.host = host
        self.port1 = port1
        #self.port2 = port2
        self.port3 = port3


    def video_stream(self, host, port):

        s = socketserver.TCPServer((host, port), VideoStreamHandler)
        s.serve_forever()

    def sensor_stream(self, host, port):

        s = socketserver.TCPServer((host, port), SensorDataHandler)
        s.serve_forever()

    def drive_stream(self, host, port):

        s = socketserver.TCPServer((host, port), DriveDataHandler)
        s.serve_forever()

    def start(self):
        drive_thread = threading.Thread(target=self.drive_stream, args=(self.host, self.port3))
##        sensor_thread = threading.Thread(target=self.sensor_stream, args=(self.host, self.port2))
##        sensor_thread.daemon = True #this thread will be killed after the main program exits
##        sensor_thread.start()
        drive_thread.daemon = True
        drive_thread.start()

        video_thread = threading.Thread(target=self.video_stream, args=(self.host, self.port1))
        video_thread.daemon = True #this thread will be killed after the main program exits
        video_thread.start()

        pygame.init()
        pygame.display.set_mode((250, 250))
        finish = False
        while not finish:
            events = pygame.event.get()
            for e in events:
                if e.type == pygame.QUIT:
                    finish = True
        pygame.quit()

        #self.video_stream(self.host, self.port1)

但是,一旦退出,您生成的所有线程会发生什么情况?您需要正确关闭服务器

相关问题 更多 >