Форум сайта python.su
Доброго времени суток, почтенные!
Помогите пожалуйста решить такую задачу:
Есть приложение состоящее из двух форм (наривосанных в QT Designer), первая форма отображает содержимае БД, вторая позволяет редактировать содержимое БД. Вторая форма вызывается из первой, и представляет собой отдельный скрипт с ui-файлом.
Как можно реализовать отображение изменений в БД на первой форме после проведения действий во второй. Т.е. я что то добавил в БД и хочу, что бы у меня обновилось содержимое комбобокса, взятое из БД, на первой.
Вот как у меня реализованы формы:
Форма 1
(Ui_MainWindow, QMainWindow) = uic.loadUiType('forms/main.ui') class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): QMainWindow.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) ... # Содержимое комбобокса из БД при открытии Формы 1 functions.comboBoxPapulate(self.ui.comboBox_select_ObjectGroup, 'groups') ... # Открытие Формы 2 def AddForm(self): self.additem = additem.AddItemsForm(parent=QApplication.activeWindow()) self.additem.setWindowModality(Qt.WindowModal) self.additem.show() ...
(Ui_AddItemsForm, QMainWindow) = uic.loadUiType('forms/addform.ui') class AddItemsForm(QMainWindow, Ui_AddItemsForm): def __init__(self, parent=None): QMainWindow.__init__(self, parent) self.ui = Ui_AddItemsForm() self.ui.setupUi(self) ...
Офлайн
# Форма 2 class AddItemsForm(QDialog, Ui_AddItemsForm): def __init__(self, parent=None): QDialog.__init__(self, parent) self.setupUi(self) # self.accept() - диалог закрывается, self.exec_() возвращает QtGui.QDialog.Accepted # self.reject() - диалог закрывается, self.exec_() возвращает QtGui.QDialog.Rejected def getData(self): """ Возвращаем данные формы """ return .... # Открытие Формы 2 def AddForm(self): form = AddItemsForm(self) if form.exec_() == QtGui.QDialog.Accepted: dataform = form.getData()
Отредактировано Rodegast (Сен. 16, 2016 12:40:45)
Офлайн
RodegastЯ понял, что из QMainWindow необходимо сделать QDialog, но всеравно вылетает ошибка:
Офлайн
Сделал следующим образом:
""" открытие Формы 2 """ def AddForm(self): additem_form = additem.AddItemsForm(self) additem_form.setWindowModality(Qt.WindowModal) additem_form.show()
""" Форма 2 """ class AddItemsForm(QMineWindow, Ui_AddItemsForm): def __init__(self, parent=None): self.parent = parent QMineWindow.__init__(self, self.parent) self.ui = Ui_AddItemsForm() self.ui.setupUi(self) ... def closeEvent(self, QCloseEvent): self.MW = self.parent self.MW.populateComboBox()
Офлайн
Посмотри какого типа AddItemsForm. Поменять его на QDialog нужно также и в ui файле, иначе как минимум будут проблемы с компоновкой.
P.S. form.exec_() конечно-же возвращает Accepted/Rejected с этим я немного ошибся.
Офлайн
RodegastСпасибо за помощь!
Посмотри какого типа AddItemsForm. Поменять его на QDialog нужно также и в ui файле, иначе как минимум будут проблемы с компоновкой.P.S. form.exec_() конечно-же возвращает Accepted/Rejected с этим я немного ошибся.
Офлайн