Использование SIgnals с переменными PyQT - PullRequest
0 голосов
/ 13 октября 2011

Здравствуйте, я пытаюсь выяснить, как получить данные из моего рабочего класса. У меня есть серверный код, запущенный как многопоточный процесс, и я хочу отправить некоторые данные со своего сервера в графический интерфейс pyQT

У меня есть переменная в моем коде GUI


    self.mytext = QTextEdit()

и в коде моего сервера я отправляю данные в графический интерфейс. Единственная проблема в том, что я не знаю, как настроить сигналы, чтобы сделать это правильно: -P


    self.emit(SIGNAL('mytext'), mytext.setText(msg))

Любые идеи, как это сделать: -)

* веселит

Ответы [ 2 ]

3 голосов
/ 13 октября 2011

Во-первых, посмотрите, как работает концепция Сигналы / Слоты. Оригинальная документация Qt for - хорошее начало.Затем, если вы работаете с PyQt 4.5+, попробуйте использовать сигналы нового стиля и слоты .Они более Pythonic.

Вот как маленький пример может работать (без очевидных частей).

class myWorker(QtCore.QThread):
    # Register the signal as a class variable first
    mySignal = QtCore.pyqtSignal(QtCore.QString)

    # init and other stuff...

    def someFunction(self):
        #....
        # emit the signal with the parameter
        self.mySignal.emit(msg)

# GUI
class myWindow(QtGui.QMainWindow):
    def __init__(self):
        # usual init stuff and gui setup...
        self.mytext = QTextEdit()

        # worker
        self.worker = myWorker()
        # register signal to a slot
        self.worker.mySignal.connect(self.mytext.setText)
1 голос
/ 13 октября 2011

Вам необходимо создать сигнал с той же сигнатурой, что и для целевого слота.

self.newText = QtCore.pyqtSignal(QtCore.QString)

Затем подключите его к слоту setText графического интерфейса пользователя

self.newText.connect(mytext.setText) 

И затемвы можете выдавать его всякий раз, когда вам нужно в коде:

self.newText.emit("My Text Here") 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...