Не помешает, конечно, привести код форм. Вы должны дать действию имя, и найти его через объект, полученный после загрузки ui, и подключить к сигналу действия — слот:
win = uic.loadUi("main_window.ui")
action = win.findChild(QAction, "your_action_name")
action.triggered.connect(your_object.your_slot)
Вы можете определить свой класс окна, чтобы задать в нем обработчики:
class MainWindow(QtWidgets.QMainWindow): # ваш базовый класс
def __init__(self):
super(Ui, self).__init__()
uic.loadUi('main_window.ui', self)
action = self.findChild(QAction, "your_action_name")
action.triggered.connect(self.your_slot)
self.show()
def your_slot(self):
pass
Создать новое окно можно таким же образом:
widget = uic.loadUi("widget.ui")
widget.show()
Однако, не забудьте, что если widget создан внутри слота-обработчика, ссылка будет уничтожена по завершению функции. Вы можете привязать виджет к классу главного окна (self.widget = None), затем в обработчике действия проверяя, создан и открыт ли он.
PS старайтесь избегать транслитерации и "неполноценных" имен объектов, вроде "glav". Это в первую очередь показывает неаккуратность кода и послужит ошибкам в будущем.