Найти - Пользователи
Полная версия: Потоки ошибка(QObject: Cannot create children for a parent that is in a different thread)
Начало » Python для новичков » Потоки ошибка(QObject: Cannot create children for a parent that is in a different thread)
1
FunNy77
Приветствую всех.
Help. При создании работе потока крашится прога и выводит ошибку
 QObject: Cannot create children for a parent that is in a different thread. 
(Parent is QTextDocument(0x2643330), parent's thread is QThread(0x2355d10), current thread is QThread(0x7f95c0001700)
Код программы
 # -*- coding: utf-8 -*-
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import chat_ui  
import UiSettings3
import sys
import NetWork
import threading  
import time 
PORT = 11902
class MyWindow(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)
        #  ui-переменная окна приложения. Само окно находится в chat_ui
        self.ui = chat_ui.Ui_MainWindow()
        self.ui.setupUi(self)
        #  ui2-переменная для окна настроек. Находится в UiSettings3
        self.widget = QMainWindow()
        self.ui2 = UiSettings3.Ui_MainWindow()
        self.ui2.setupUi(self.widget)
        # Поток прослушки
        self.tr_ip = threading.Thread( target = self.listenData)
        # self.tr_ip.setDaemon(True)
    
    # Кнопка вызова формы настроек    
    def open_settings(self):
        print("OpenSettings window")
        #  sock-переменная использ. класс для UDP сети. Находится в NetWork
        # self.ui2.lineEdit_3.setText(self.sock.getName())
        # self.ui2.lineEdit_2.setInputMask('999.99.99.999')
        QObject.connect(mainWindow.ui2.pushButton_2, SIGNAL("clicked()"), lambda: self.button_connect())
        self.widget.show()
    
    def listenData(self):
        print("Listen Data")
        self.sock = NetWork.Network()
        # self.ui2.lineEdit_3.setText(self.sock.getName())
        self.sock.connect('',PORT)
        while True:
            data, addr = self.sock.recv()
            if data:
                self.ui.textEdit.setText(addr[0]+": "+data)
            time.sleep(0.1)
    # Кнопка подключения сервера
    def button_connect(self):
        print("Button connect pressed")
        self.tr_ip.start()
    # Функция отправки данных    
    def sendData(self):
        print("----------------------------------------")
        print("Send data")
        data = self.ui.lineEdit.text()
        IP_User = self.ui2.lineEdit_2.text()
        print ("IP to send: "+IP_User)
        self.sock.send(data, IP_User, PORT)
if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWindow = MyWindow()
    QObject.connect(mainWindow.ui.action, SIGNAL("triggered()"),
                            lambda:  mainWindow.open_settings())
    QObject.connect(mainWindow.ui.pushButton, SIGNAL("clicked()"),
                            lambda:  mainWindow.sendData())
    mainWindow.show()
    sys.exit(app.exec_())

Прошу помочь исправить данную ошибку. Никак не могу понять структуру этих потоков.
py.user.next
Там надо QThread() использовать.
Rodegast
http://python.su/forum/topic/27194/?page=1#post-145858
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB