Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
2 / 2 / 2
Регистрация: 19.10.2014
Сообщений: 56
PyQt5

Обмен данными между формами

13.03.2018, 21:13. Показов 3257. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Пишу небольшое приложение средствами PyQt, хотел посоветоваться, как лучше осуществлять обмен данными между формами. Каждой форме соответствует свой класс (форма1 - класс1). Есть форма1, в которой находятся поля для заполнения. По нажатию кнопки вызывается метод класса1, который перехватывает введенные данные. Дальше я вижу 3 пути:
1) Этот метод обрабатывает полученные данные. В итоге обработки получим несколько, условно говоря, переменных. И на данном этапе вопрос. Как обратиться к этим самым переменным из метода класса2, если они существуют только внутри метода класса1?
2) Этот метод запоминает введенные данные. Далее мы обращаемся к ним в классе2 и уже там обрабатываем. Здесь вопрос, возможно ли это и если да, то как лучше сделать?
3) Этот метод сразу передает введенные данные в класс2 и они там уже обрабатываются. Вопрос тот же, возможно ли это и если да, то как лучше сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2018, 21:13
Ответы с готовыми решениями:

Обмен данными между двух форм pyqt5
Поясните как передавать правильно данные из одной формы в другую? Задача такая, из главной формы получается передать текст во вторую (...

Двусторонний обмен данными без блокировки GUI
Здравствуйте, у меня следующая ситуция: есть GUI написанный с WX. По нажатию кнопки создается новый поток и запускается сторонний ехе...

Как передать значение между формами
Всем привет! Такой вопрос. Как мне передать значение введенное во втором окне в LineEdit, в главное окно в Label? from PyQt5 import...

4
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
13.03.2018, 21:31
Недавно что-то похожее обсуждалось Взаимодействие между окнами в PyQt5
1
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
14.03.2018, 13:30
Возможно всё.
Плясать надо от того, какой из ваших классов знает о другом. 1-й о втором или наоборот. Так, чтобы сразу и туда и сюда - не делать, это циклическая ссылка и зло.
1
2 / 2 / 2
Регистрация: 19.10.2014
Сообщений: 56
14.03.2018, 19:25  [ТС]
По логике, класс2 знает о классе1, так как перехватываться данные будут в классе1 для дальнейшего использования в классе2.

Добавлено через 58 секунд
По логике, класс2 знает о классе1, так как перехватываться данные будут в классе1 для дальнейшего использования в классе2.

Добавлено через 22 минуты
Я посмотрел код, приведенный axe77.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import sys
import UI_MainForm
import ReportForm
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtSql import *
 
 
class MainForm(QWidget, UI_MainForm.Ui_MainForm):
    def __init__(self):
        QWidget.__init__(self)
        self.setupUi(self)
 
        self.pushButton_quit.clicked.connect(qApp.quit)
        self.pushButton_report.clicked.connect(self.report)
 
 
 
    def report(self):
        self.open_report = ReportForm.Report(self.lineEdit_user.text(), self.lineEdit_passwd.text())    #передаём в конструктор значения lineEdit_user и lineEdit_passwd
        self.open_report.show()
 
if __name__ == '__main__':
    main_form_app = QApplication(sys.argv)
    Main_window = MainForm()
    Main_window.show()
    sys.exit(main_form_app.exec_())
 
import sys
import UI_ReportForm
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtSql import *
 
 
class Report(QWidget, UI_ReportForm.Ui_Form):
    def __init__(self, user, password):# ВОТ ОНИ РОДИМЫЕ!!!)))
        QWidget.__init__(self)
        self.setupUi(self)
 
        self.pushButton_exit.clicked.connect(self.close)
 
if __name__ == '__main__':
    report_app = QApplication(sys.argv)
    report_window = Report()
    report_window.show()
    sys.exit(report_app.exec_())
Метод report вызывается при нажатии кнопки, в котором конструктору класса Report передаем наши данные, но ведь после выхода из этого метода экземпляр будучи локальным, уничтожится. А данные никуда так и не уйдут.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
14.03.2018, 19:56
roll26, видимо, класс2 - MainForm, класс1 - Report.

Цитата Сообщение от roll26 Посмотреть сообщение
в котором конструктору класса Report передаем наши данные, но ведь после выхода из этого метода экземпляр будучи локальным, уничтожится. А данные никуда так и не уйдут.
Механизм Qt не даст этого сделать, ссылка на него останется после завершения процедуры и окно так и останется висеть.
Вам желательно сделать модальный диалог (погуглите сами). После показа берёте у формы логин-пароль, сохраняете, куда надо, и окно больше не нужно - можно закрывать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2018, 19:56
Помогаю со студенческими работами здесь

Обмен данными между родителем и потомком
Здравствуйте. Помогите решить задачу. Родитель передает потомку три стороны треугольника. Потомок получает площадь треугольника и передает...

Обмен данными между несколькими устройствами в локальной сети
Уважаемые знатоки. В наличии имеется несколько устройств. 1)ПК на системе linux 2)ПК на Windows 3)Телефон на android Все они...

Обмен данными между веб-приложением (Flask) и графическим приложением (PyQt5) (Python3.7)
С помощью каких библиотек (модулей) и каким образом можно реализовать сервер на базе графического приложения сделанного с помощью...

Защищенный обмен данными в сети
Друзья, накидайте вариантов для теоретической реализации курсовой работы на тему ЗАЩИЩЕННЫЙ ОБМЕН ДАННЫМИ В СЕТИ. Может кто-то может...

Обмен данными Python => Powershell
Как можно устроить обмен между Python и Powershell? Понимаю, что можно выгружать данные Python в файл и подтягивать его в Powershell, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru