【发布时间】:2018-07-09 04:56:05
【问题描述】:
我想通过直接导入 .ui 文件来使用使用 QtCreator 创建的自定义小部件。
目前,当我使用 pyuic5 创建 .py 文件时,我的代码运行良好。但我希望能够直接从 .ui 文件导入我的小部件。
一些工作代码:
main.py
import MyWidget
MainWindowUI, MainWindowBase = uic.loadUiType('main.ui')
class mainGUIWindow(MainWindowUI, MainWindowBase):
def __init__(self, mainWindow):
QtWidgets.QMainWindow.__init__(self)
self.setupUi(self)
self.myWidget = MyWidget.Ui_Form()
self.myWidget.setupUi(self)
MyWidget.py(通过pyuic5 -x MyWidget.ui -o MyWidget.py 生成)
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(271, 201)
# The rest of the widget is down here
有没有办法使用 LoadUi() 或类似的东西来避免使用 pyuic ?到目前为止我所尝试的:
main.py
class mainGUIWindow(MainWindowUI, MainWindowBase):
def __init__(self, mainWindow):
QtWidgets.QMainWindow.__init__(self)
self.setupUi(self) # contains a QFrame called 'frame'
# Creation of myWidget
self.wid = myWidget()
# Adding myWidget to a layout
hbox = QtWidgets.QHBoxLayout()
hbox.addWidget(self.wid)
self.frame.setLayout(hbox)
class myWidget(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self)
uic.loadUi('MyWidget.ui', self)
当我尝试将小部件添加到主窗口中的布局时,我收到此错误:
QWidget::setLayout: 试图在 QFrame "frame" 上设置 QLayout "", 已经有布局
【问题讨论】:
-
看看这个:stackoverflow.com/questions/2398800/… 他们使用 PyQt4 但在 PyQt5 中是一样的
-
我编辑了我的帖子以展示我的尝试。我可以在我的 main.py 文件中创建一个 Widget 类,但我无法将它正确添加到主窗口中
-
在此处查找新错误(似乎与您的第一个问题无关):stackoverflow.com/questions/25450598/…
标签: python qt-creator pyqt5 pyuic