繁体   English   中英

如何同时运行 Python GTK GUI 和聊天?

[英]How can I run a Python GTK GUI and a chat at the same time?

有人可以帮我解决 Python GTK + sockets 吗? 我正在尝试聊天,所以我正在运行它来接收来自其他用户的消息:

def socket_recv(socket, buffer):
    while True:
        try:
            message = socket.recv(1024).decode()
            end_iter = buffer.get_end_iter()
            buffer.insert(end_iter, message + "\n")
            while Gtk.events_pending():
                Gtk.main_iteration()
        except:
            print("Você foi desconectado do servidor")
            socket.close()
            break

在我的主要,我正在尝试举办这个活动:

def onConnect(self, widget):
        self.nickname = self.nickname_entry.get_text().strip()
        self.adress = self.adress_entry.get_text().strip()

        if self.nickname == "" or self.adress == "": 
            self.error_message.show()
            return

        HOST, PORT = self.adress.split(':')
        PORT = int(PORT)
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.connect((HOST, PORT))

        self.sock.send(str.encode(self.nickname))
        
        self.builder.add_from_file("interface.glade")  
        self.builder.connect_signals(self)

        self.chat_text.set_editable(False)
        self.chat_text.set_wrap_mode(3)
        self.chat_buffer = self.chat_text.get_buffer()
        self.chat_buffer.set_text("Início do chat\n")
        self.end_iter = self.chat_buffer.get_end_iter()

        self.chatWindow.show()

        while Gtk.events_pending():
                Gtk.main_iteration()

        thread = threading.Thread(target=socket_recv(self.sock, self.chat_buffer))
        thread.start()


我在GUI的起始window中得到用户的地址和昵称,然后在他们点击“连接”按钮后尝试连接服务器,然后出现聊天window。 虽然我可以连接到服务器,但当我尝试使用 socket_recv 运行我的聊天 GUI 时,GUI 变得完全不起作用(无法按下按钮等),我必须强制退出以关闭应用程序。 我对 Python、GTK 和线程非常陌生,希望有任何帮助

问题解决了,我只是改变了

threading.Thread(target=socket_recv(self.sock, self.chat_buffer))

thread = threading.Thread(target=socket_recv, args=(self.sock, self.chat_buffer))

任何不便敬请谅解

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM