есть основной файл main.py с главным окном приложения mainmdi.py (инициализируемый генератором pyuic), содержащий menubar с меню uvedoml_menu и mdi форму mdiArea
import mainmdi class MyWin(QtWidgets.QMainWindow): def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) self.ui = mainmdi.Ui_MainWindow() self.ui.setupUi(self) # self.setWindowFlag(Qt.MSWindowsFixedSizeDialogHint) date_time = QDateTime.currentDateTime() self.ui.Period.setDate(date_time.date())
def NewUvedoml_ur_clicked(parent): ur_w = NewUvedomlenie() # w.ui.get_data_btn.setHidden(False) sWindow = QtWidgets.QMdiSubWindow(parent.mdiArea) sWindow.setWidget(ur_w) parent.mdiArea.addSubWindow(sWindow) sWindow.setAttribute(Qt.WA_DeleteOnClose) sWindow.setWindowFlag(Qt.MSWindowsFixedSizeDialogHint) sWindow.setWindowTitle("Новое уведомление по юридическим лицам и приравненным") sWindow.adjustSize() ur_w.ui.comboTypePotr.setCurrentIndex(0) sWindow.show() def add_menus_to_main(parent): # parent = self.ui # создаем подменю модуля parent.new_sub_menu = QtWidgets.QMenu("&Новые уведомления") parent.uvedoml_menu.insertMenu(parent.uvedoml_menu.actions()[0], parent.new_sub_menu) # добавляем новую кнопку (юр) в меню и выставляем на исполнение parent.ur_new_uvedoml_action = QtWidgets.QAction("Новое уведомление &Юр") parent.ur_new_uvedoml_action.setShortcut("Ctrl+U") #clicked_ur = NewUvedoml_ur_clicked(parent) #parent.ur_new_uvedoml_action.triggered.connect(clicked_ur) parent.new_sub_menu.insertAction(parent.uvedoml_menu.actions()[0], parent.ur_new_uvedoml_action) class NewUvedomlenie(QtWidgets.QDialog): def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) self.setWindowFlag(Qt.MSWindowsFixedSizeDialogHint) self.ui = new_uvedoml.Ui_Dialog()
в данный момент при добавлении в main.py строки
import subfolder.new_uvedoml_form as new_uvedoml_form
new_uvedoml_form.add_menus_to_main(self.ui)
clicked_ur
parent.ur_new_uvedoml_action.triggered.connect(clicked_ur)
parent.ur_new_uvedoml_action.triggered.connect(clicked_ur)
TypeError: argument 1 has unexpected type ‘NoneType’
Ранее функция NewUvedoml_ur_clicked была в файле main.py и была частью класса MyWin и отрабатывалась как положено без параметра (вместо param был self ну и на местах параметра было self.ui. триггер тоже был частью __init__ и отрабатывался как надо (NewUvedoml_ur_clicked вызывалась без скобок) захотел перенести все в файл модуля для дальнейшего минимального редактирования основного файла и более простой масштабируемости (все настройки делать в модулях и потом просто двумя строками подключать их)
“косметика” вроде как получилась, а вот функционал нет