Если выдернуть из контекста, то примерно так:
from PyQt5.QtWidgets import \
(QWidget, QPushButton, QApplication, QLabel, QComboBox, QLineEdit, QGridLayout, QMessageBox, QListWidget)
from PyQt5.QtCore import Qt
class one(QWidget):
def __init__(self):
super().__init__()
# ...
self.start()
def start(self):
self.layout = QGridLayout()
self.setLayout(self.layout)
self.setGeometry(100, 100, 600, 500)
# ...
self.show()
class two(QWidget):
def __init__(self):
super().__init__()
# ...
self.start()
def start(self):
self.layout = QGridLayout()
self.setLayout(self.layout)
self.setGeometry(100, 100, 600, 500)
# ...
self.show()
def main():
app = QApplication(sys.argv)
def start1():
s1 = one()
def start2():
s2 = two()
root = QWidget()
root.layout = QGridLayout()
root.setLayout(root.layout)
root.setGeometry(100, 100, 600, 500)
# ...
root.butt = QPushButton(text='start 1')
root.butt.clicked.connect(start1)
root.layout.addWidget(root.butt, 1, 1)
root.butt = QPushButton(text='start 2')
root.butt.clicked.connect(start2)
root.layout.addWidget(root.butt, 2, 1)
root.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
Собственно класс one (добавление в БД) запускается, класс two (просмотр из БД) - нет (точнее мельком открывается окно и пропадает, как-будто все отработало и все (пробовал ставить input и прочее), на работу gc не похоже).
Если в main сразу вызывать two - запускается. Во всех остальных вариантах - нет.
p.s. Подозреваю, что такая задача делается проще и не так криво.