TextEdit 中的 PyQt5 clear() 方法使程序崩溃 [重复]

问题描述 投票:0回答:0

当我运行程序时,代码进入清除方法并且我的代码崩溃了,我确实认为这可能是我的线程问题,这里是我的代码的某些部分可能导致问题+问题。

class client(QtWidgets.QMainWindow):
    def __init__(self):
        super(client, self).__init__()
        self.main_ui = Ui_MainWindow()
        self.main_ui.sendbutton.clicked.connect(self.handle_main)
        self.main_ui.redirectmain.clicked.connect(self.move_to_main)
        self.main_ui.redirectsports.clicked.connect(self.move_to_sports)
        self.main_ui.redirectgaming.clicked.connect(self.move_to_gaming)
        self.main_ui.redirectmusic.clicked.connect(self.move_to_music)

    def go_to_main(self): #called after login or signup 
        self.login_ui.close()
        self.signup_ui.close()
        self.forgotpass_ui.close()
        self.main_ui.show()
        self.message_thread = threading.Thread(target=self.handle_main_actions)
        self.message_thread.start()
        self.move_to_main()

    def handle_main_actions(self):
        display_chat = self.main_ui.chat_to_display
        display_users = self.main_ui.display_users_online
        data = socket.recv(1024).decode()
        print(type(data))
        print(f"Received data: {data}")
        print('3')
        json_data = json.loads(data)
        print(type(json_data))
        if 'list' in json_data:
            display_users.clear()
            list = json_data['list']
            for user in list:
                display_users.append(user)
        elif 'displaytoclient' in json_data:
            message = json_data['message']
            time_sent = json_data['time']
            username = json_data['Username']
            room_in = json_data['room']
            print(room_in)
            print(self.room_user_in)
            if self.room_user_in == room_in:
                display_chat.append("[" + username + "] [" + time_sent + "]" + ": \n" + message)
        elif 'messages' in json_data:
            messages_to_display_in_chat = json_data['messages']
            print(messages_to_display_in_chat)
            print(type(messages_to_display_in_chat))
            print('22')
            **self.main_ui.chat_to_display.clear()**
            print(type(self.main_ui.chat_to_display))
            print('33')
            for item in messages_to_display_in_chat:
                print('1')
                value = item
                username = value['username']
                print(username)
                mes = value['message']
                print(mes)
                time = value['time']
                print(time)
                self.main_ui.chat_to_display.append("[" + username + "] [" + time + "]" + ": \n" + mes)
            self.request_online_users_list()

class Ui_MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(Ui_MainWindow, self).__init__()
        self.chat_to_display = self.findChild(QtWidgets.QTextEdit, 'displaychat') 


当我打印(类型(self.main_ui.chat_to_display))时我得到 在 print('22') 之后,我的代码崩溃了,不再继续下一次打印。

代码错误:进程已完成,退出代码为 -1073741819 (0xC0000005)

python multithreading qt pyqt5 python-multithreading
© www.soinside.com 2019 - 2024. All rights reserved.