Прежде всего, я рекомендую вам прочитать документы PyQt, ссылающиеся на Qt Designer .
Что касается проблемы, Qt Designer не предоставляет виджет, а класс, который служит интерфейсомв виджет, и это можно увидеть в его заявлении:
class Ui_gen_settings(object):
# ...
Класс наследует от объекта, а не от QWidget, QDialog, QMainWindow и т. д.
В документах, которые указывают изначальноРекомендуется создать виджет и использовать интерфейс, предоставленный Qt Designer.Для этого правильно использовать pyuic, но я заменим gen_settings.py на gen_settings_ui.py, чтобы изменения были понятны.
pyuic5 gen_settings.ui -o gen_settings_ui.py
Итак, теперь мы создадим файл с именем gen_settings.py, который содержит виджети используйте интерфейс.
gen_settings.py
from gen_settings_ui import Ui_gen_settings
from PyQt5 import QtWidgets
class Gen_Settings(QtWidgets.QWidget, Ui_gen_settings):
def __init__(self, parent=None):
super(Gen_Settings, self).__init__(parent)
self.setupUi(self)
Затем, когда вы создаете .ui, соответствующий Ui_MainWindow, вы добавляете QWidget, который является пустымконтейнер.
![enter image description here](https://i.stack.imgur.com/kkmv1.png)
![enter image description here](https://i.stack.imgur.com/icsaY.png)
На изображении контейнер виджета - тот, который находится ввверху слева, и теперь мы заменим его на Gen_Settings, поэтому мы должны продвинуть , используя следующую процедуру:
- Щелкните правой кнопкой мыши контейнер виджетов и выберите параметр
Promote To ...
.
![enter image description here](https://i.stack.imgur.com/BcDeh.png)
Следующий диалог появится и заполнит поля, как показано на рисунке (я предполагаю, что gen_settings_ui.py и gen_settings.py находятся в той же папке, что и текущий .ui)
![enter image description here](https://i.stack.imgur.com/K0mYn.png)
Вы нажимаете кнопку Add, а затем кнопку Promote.
Затем вы преобразуете .ui в .py с помощью pyuic, и вы получите следующее:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
# ...
self.widget = Gen_Settings(self.centralwidget)
self.widget.setObjectName("widget")
self.gridLayout.addWidget(self.widget, 0, 0, 1, 1)
# ...
from gen_settings import Gen_Settings