Обновление виджетов главного окна

В версии программы на tkInter все работает хорошо. Я решил перенести код на PyQt и столкнулся с рядом проблем. Сейчас вопрос в следующем - не обновляются виджеты главного окна программы.

Код главного окна

 class Software(QtWidgets.QMainWindow):
    def __init__(self):
        super(Software, self).__init__()
        self.MW = Ui_MainWindow()
        self.MW.setupUi(self)
            ###
        self.db = DB()              # Класс работы с БД
        self.viewItem()             # Функция просмотра Item в TableWidget
    
    def viewItem(self):
        self.MW.table.clear()
        self.db.c.execute('SELECT name FROM item')
        result = self.db.c.fetchall()
        ###
        self.MW.table.setRowCount(0)
        for row, kvoRow in enumerate(result):
            self.MW.table.insertRow(row)
            for column, item in enumerate(kvoRow):
                self.MW.table.setItem(row, column, QTableWidgetItem(str(item)))
# .....

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = Software()
    window.show()
    app.exec_()

Из главного окна по нажатию кнопки открывается диалоговое окно с вводом нового названия, записью в БД и обратным вызовом функции главного окна viewItem

class Item(QtWidgets.QDialog):
    def __init__(self, selector):                # selector переключает Update|Insert в sqlite
                                                 # в зависимости от нажатой кнопки
        super(Item, self).__init__()
        self.selector = selector
        self.MWI = Software()
        self.db = DB()
        self.diaItem()
        self.exec_()

    # ...

    def saveToBase(self):
        self.db.c.execute('INSERT INTO item (name) values (?)', (self.nameItem.text(),))
        # self.db.conn.commit()
        self.MWI.viewItem()    <----- Переходит назад в функцию класса Software, но таблица не отображает
                                      новое значение
        self.close()

То есть при запуске программы все ОК, но новое добавленное значение не отображается сразу в таблице. Помогает либо перезапуск программы, либо нажатие кнопки главного окна Отменить выборку, которая инициирует сигнал к тому же

viewItem (self.MW.butCancelItem.clicked.connect(self.viewItem)  )

Как заставить таблице сразу отображать новое значение? Перечитал уже уйму страниц про parent и child, но яснее не стало.


Ответы (0 шт):