Python 创建要嵌入QMainWindow的小部件
我有一个我还不能解决的任务。使用PyQt和Qt创建者 我想将在QT Creator中创建的自定义小部件嵌入到另一个QMainWindow中 1) 我要做的步骤: 在QT creator中创建小部件文件: 2) 将其另存为*.ui并应用此行将其转换为*.py文件:Python 创建要嵌入QMainWindow的小部件,python,pyqt,pyqt5,qt-designer,Python,Pyqt,Pyqt5,Qt Designer,我有一个我还不能解决的任务。使用PyQt和Qt创建者 我想将在QT Creator中创建的自定义小部件嵌入到另一个QMainWindow中 1) 我要做的步骤: 在QT creator中创建小部件文件: 2) 将其另存为*.ui并应用此行将其转换为*.py文件: pyuic5 gen_settings.ui -o gen_settings.py 3) 打开它,看到它以 from PyQt5 import QtCore, QtGui, QtWidgets class Ui_gen_setti
pyuic5 gen_settings.ui -o gen_settings.py
3) 打开它,看到它以
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_gen_settings(object):
def setupUi(self, gen_settings):
gen_settings.setObjectName("gen_settings")
4) 当然,这会导致函数调用:
TypeError: arguments did not match any overloaded call:
addWidget(self, QWidget): argument 1 has unexpected type 'function'
当我在另一个QMainWindow文件中调用它时:
class Ui_MainWindow(object):
def setupUi(self, MainWindow, My_Custom_widget):
MainWindow.setObjectName("MainWindow")
self.gridLayout.addWidget(My_Custom_widget, 1, 4, 1, 1)
有什么办法解决吗 首先,我建议你阅读 谈到这个问题,Qt Designer不提供小部件,而是提供一个类作为小部件的接口,这可以在他的声明中看到:
class Ui_gen_settings(object):
# ...
该类继承自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_main窗口相对应的.ui时,您添加了一个QWidget,它是一个空容器 在图中,窗口小部件容器位于左上角,现在我们将用Gen_设置替换它,因此我们必须使用以下过程:
升级到…
选项然后使用pyuic将.ui转换为.py,您将得到以下结果:
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
非常感谢。一切都成功了。这样我可以改变这个QWidget吗?我的想法是拥有一个循序渐进的管道GUI,在每个特定的时间,我想根据管道的状态用另一个QWidget来更改这个QWidget。我一直在寻找一些很好的例子,如何以智能的方式设计它,但没有找到任何适合PyQt或Qt本身的例子。也许我完全走错路了。。