PyQt5 обращение к другой форме
Есть две формы :
- Главная
- Диалог
Обе формы как отдельные виджеты, представленные в отдельных классах.
Как мне сделать так, чтобы при нажатии на кнопку в диалоге менялось содержимое TextEdit в главной форме?
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Как вариант:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDialog, QPushButton, \
QVBoxLayout, QMessageBox, QTextEdit
class Dialog(QDialog):
def __init__(self, parent):
super(Dialog, self).__init__()
self.setGeometry(800, 400, 300, 100)
self.parent = parent
self.textEdit = QTextEdit(self)
self.button = QPushButton('Отправить в Main', self)
self.button.clicked.connect(self.onClicked)
layout = QVBoxLayout(self)
layout.addWidget(self.textEdit)
layout.addWidget(self.button)
def onClicked(self):
if self.textEdit.toPlainText():
self.parent.textEdit.append(self.textEdit.toPlainText())
self.textEdit.clear()
self.close()
else:
QMessageBox.information(self, 'Information', 'Нет данных для передачи в Main.')
class Main(QWidget):
def __init__(self):
super(Main, self).__init__()
self.textEdit = QTextEdit()
button = QPushButton('Вызвать Dialog')
button.clicked.connect(self.showDialog)
layout = QVBoxLayout(self)
layout.addWidget(self.textEdit)
layout.addWidget(button)
self.dialog = Dialog(self)
def showDialog(self):
self.dialog.exec_()
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Main()
w.resize(300, 100)
w.show()
sys.exit(app.exec_())
