@Papshoika

PyQt обмен данных между модулями

Есть сгенерированный через pyuic4 модуль c классом Ui_DockWidget. В нем есть QTextEdit. В этот же класс добавлены несколько функций, которые вставляют текст в textEdit. Например, функция
def textadd(self):
                self.textEdit.setText("TEXT1")

И есть главное окно. В нем код, определяющий главное окно и добавляющий QDockWidget справа.
app = QtGui.QApplication
mw = app.activeWindow() 
editor= QtGui.QDockWidget()
editor.ui = mymodule.Ui_DockWidget()
editor.ui.setupUi(editor) 
mw.addDockWidget(QtCore.Qt.RightDockWidgetArea, editor)

Вопрос: как из главного окна вызвать функцию text1 модуля mymodule и увидеть вставленный текст в том, уже добавленном справа QDockWidget?
В дополнение скажу - были попытки добавить в класс Ui_DockWidget атрибут-сигнал. Но вызвать в нем функцию textadd не получилось. Так же эти функции необходимо будет вызвать из другого модуля, который будет подключен как еще один DockWidget.
Мне кажется, что я не понимаю чего-то очень простого и фундаментального, возможно не отделяю интерфейс от всего остального, но примеры в документации по PyQt на С++ и пока не помогли мне понять свою основную ошибку. Так в чем она?
  • Вопрос задан
  • 3377 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Papshoika Автор вопроса
Сработало в результате следующих действий:
1.Создан класс сигналов
2. Объявлена глобальная переменная типа QWidget.
3. Глобальной переменной передан textEdit.
4. + функция, которая добавляет текст в edit, например myglobalvar.append('text')
5.+функция, которая вызывает сигнал, передавая ему функцию (4) в слот и потом производит emit.
mysignal.connect(textadd)
mysignal.emit()
В результате из другого модуля можно добавлять текст, вызывая функцию, в которой соединен сигнал.
Какие есть проблемы в этом решении? То есть оно то работает, но может чего-то делать не следует?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
02 мая 2024, в 21:59
15000 руб./за проект
02 мая 2024, в 21:54
1000 руб./в час
02 мая 2024, в 21:27
300000 руб./за проект