class MainWindow(QMainWindow): def __init__(self): super().__init__() self.db = DataBase() self.widget = Contacts(self.db) self.err_win = None self.init_ui() def init_ui(self): self.resize(400, 600) self.centre() self.setWindowTitle('export_contacts') self.setCentralWidget(self.widget) vk_action = QAction('&VK', self) vk_action.triggered.connect(self.widget.init_ui) fb_action = QAction('&Facebook', self) fb_action.triggered.connect(lambda: self.widget.init_ui()) exit_action = QAction('&Exit', self) exit_action.triggered.connect(qApp.quit) th = Thread(target=self.widget.import_all_contacts) import_action = QAction('&Import all contacts', self) import_action.triggered.connect(lambda: th.start()) search_action = QAction('&Find contact', self) search_action.triggered.connect(self.find_contact) menubar = self.menuBar() export = menubar.addMenu('&Export from') find_contact = menubar.addMenu('&Find Contact') find_contact.addAction(search_action) import_cont = menubar.addMenu('&Import all contacts') import_cont.addAction(import_action) ex = menubar.addMenu('&Exit') ex.addAction(exit_action) from_vk = export.addMenu('&VK') from_fb = export.addMenu('&Facebook') from_vk.addAction(vk_action) from_fb.addAction(fb_action) self.show() if self.db.db_exists(): self.widget.init_ui() def find_contact(self): name, ok = QInputDialog.getText(self, 'Find contact', 'Enter username') if ok: if self.widget.dic_wind.get(name) is not None: self.widget.dic_wind[name].init_ui() else: self.err_win = ErrorWindow( 'Contact ' + name + ' not found') self.err_win.init_ui() def centre(self): qr = self.frameGeometry() cp = QDesktopWidget().availableGeometry().center() qr.moveCenter(cp) self.move(qr.topLeft())