如何使用PYQT5和Python3将一个窗口放在另一个窗口中,从菜单中选择一个区域?
我使用Qt designer 5创建了三个不同的窗口, 主体MainWindows.py 子窗口subVENTANA1.py和subVENTANA2.py 如何使用mdiArea从MainWindows.py调用子窗口 在“只有一个菜单栏”中,此菜单中有多个子菜单,在本例中为2个子菜单。 我已经试过了,但我不知道如何打电话给你如何使用PYQT5和Python3将一个窗口放在另一个窗口中,从菜单中选择一个区域?,python,pyqt5,Python,Pyqt5,我使用Qt designer 5创建了三个不同的窗口, 主体MainWindows.py 子窗口subVENTANA1.py和subVENTANA2.py 如何使用mdiArea从MainWindows.py调用子窗口 在“只有一个菜单栏”中,此菜单中有多个子菜单,在本例中为2个子菜单。 我已经试过了,但我不知道如何打电话给你 like this: from subVentana import Ui_subwindow class MainWindow(QMainWindow): de
like this:
from subVentana import Ui_subwindow
class MainWindow(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self, parent=parent)
subwindow = QMdiSubWindow()
subwindow.setWidget(Ui_subwindow())
self.mdiArea.addSubWindow(subwindow)
我尝试这样做:
我的情况是这样的:
我希望您理解setWidget()
需要一个QWidget
参数,而不是pyuic生成的文件中使用的ui.*
子类
from PyQt5 import QtCore, QtGui, QtWidgets
from ui_mainwindow import Ui_mainWindow
from subVENTANA1 import Ui_subWindow1
class MainWindow(QtWidgets.QMainWindow, Ui_mainWindow):
def __init__(self, parent=None):
QtWidgets.QMainWindow.__init__(self, parent=parent)
self.setupUi(self)
subwindow1 = QtWidgets.QMdiSubWindow()
# create the widget instance
window1 = QtWidgets.QMainWindow()
# create the ui class instance
ui = Ui_subWindow1()
# set the ui for the widget instance
ui.setupUi(window1)
# set the widget for the subwindow
subwindow1.setWidget(window1)
self.mdiArea.addSubWindow(subwindow1)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
从PyQt5导入QtCore、QtGui、qtwidget
从ui\u主窗口导入ui\u主窗口
从subVENTANA1导入Ui_子窗口1
类MainWindow(QtWidgets.QMainWindow,Ui_MainWindow):
def uuu init uuu(self,parent=None):
qtwidts.QMainWindow.\uuuuu init\uuuuuu(self,parent=parent)
self.setupUi(self)
subwindow1=QtWidgets.qmduseBwindow()
#创建小部件实例
window1=QtWidgets.QMainWindow()
#创建ui类实例
ui=ui_子窗口1()
#设置小部件实例的ui
ui.setupUi(window1)
#设置子窗口的小部件
子窗口1.setWidget(窗口1)
self.mdiArea.addSubWindow(子窗口1)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
mainWindow=mainWindow()
mainWindow.show()
sys.exit(app.exec_())
setWidget()
需要一个QWidget
参数,而不是从pyuic生成的文件中使用的ui.*
子类
from PyQt5 import QtCore, QtGui, QtWidgets
from ui_mainwindow import Ui_mainWindow
from subVENTANA1 import Ui_subWindow1
class MainWindow(QtWidgets.QMainWindow, Ui_mainWindow):
def __init__(self, parent=None):
QtWidgets.QMainWindow.__init__(self, parent=parent)
self.setupUi(self)
subwindow1 = QtWidgets.QMdiSubWindow()
# create the widget instance
window1 = QtWidgets.QMainWindow()
# create the ui class instance
ui = Ui_subWindow1()
# set the ui for the widget instance
ui.setupUi(window1)
# set the widget for the subwindow
subwindow1.setWidget(window1)
self.mdiArea.addSubWindow(subwindow1)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
从PyQt5导入QtCore、QtGui、qtwidget
从ui\u主窗口导入ui\u主窗口
从subVENTANA1导入Ui_子窗口1
类MainWindow(QtWidgets.QMainWindow,Ui_MainWindow):
def uuu init uuu(self,parent=None):
qtwidts.QMainWindow.\uuuuu init\uuuuuu(self,parent=parent)
self.setupUi(self)
subwindow1=QtWidgets.qmduseBwindow()
#创建小部件实例
window1=QtWidgets.QMainWindow()
#创建ui类实例
ui=ui_子窗口1()
#设置小部件实例的ui
ui.setupUi(window1)
#设置子窗口的小部件
子窗口1.setWidget(窗口1)
self.mdiArea.addSubWindow(子窗口1)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
mainWindow=mainWindow()
mainWindow.show()
sys.exit(app.exec_())
请提供一个非外部链接。我已将代码和图像放入窗口中。我无法理解您所说的窗口是什么意思。您正在寻找弹出窗口吗?如果可能的话,先添加窗口呈现方式的屏幕截图,我尝试将subVENTANA2.py和subVENTANA1.py模块中的主窗口更改为QWidget,并让它成为MainWindows.py。伊卡利想知道如何使窗口显示在灰色空间,而不是作为弹出窗口(不在主窗口之外)谢谢:)请提供,不是外部链接我已经把代码和图像放在窗口里面了,我能理解你所说的窗口是什么意思,你在找弹出窗口吗?如果可能的话,先添加窗口呈现方式的屏幕截图,我尝试在模块subVENTANA2.py和subVENTANA1.py中将主窗口更改为QWidget,并让它成为MainWindows.py。伊卡利想知道如何使窗口显示在灰色空间,而不是作为弹出窗口(不在主窗口之外)谢谢:)这对我很有帮助!。非常感谢@musicamante!!对不起@musicamante!!我如何使用这个类中的QMenuBar?@OsvaltOsvalth你是什么意思?QMainWindow的菜单栏可以通过与任何QMainWindow一样的方式访问…我试图调用类主窗口(qtwidts.QMainWindow,Ui\u MainWindow)中的菜单栏:
但是我无法访问Ui\u主窗口(对象)中的菜单栏:
我已经可以使用该对象了。斯派德很傻。抱歉。但我正在尝试启动self.actionBrillo\u contract.triggered.connect(self.mdiArea.addSubWindow(subwindow1))
,但它显示此TypeError:argument 1具有意外的类型“qmdusubwindow”
,这对我很有帮助!。非常感谢@musicamante!!对不起@musicamante!!我如何使用这个类中的QMenuBar?@OsvaltOsvalth你是什么意思?QMainWindow的菜单栏可以通过与任何QMainWindow一样的方式访问…我试图调用类主窗口(qtwidts.QMainWindow,Ui\u MainWindow)中的菜单栏:
但是我无法访问Ui\u主窗口(对象)中的菜单栏:
我已经可以使用该对象了。斯派德很傻。抱歉。但我正在尝试启动self.actionBrillo\u contract.triggered.connect(self.mdiArea.addSubWindow(subwindow1))
,但它显示此TypeError:参数1具有意外的类型“qmdusubwindow”
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_subWindow2(object):
def setupUi(self, subWindow2):
subWindow2.setObjectName("subWindow2")
subWindow2.resize(366, 299)
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
subWindow2.setFont(font)
subWindow2.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
subWindow2.setLayoutDirection(QtCore.Qt.RightToLeft)
self.centralwidget = QtWidgets.QWidget(subWindow2)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout_2.setObjectName("gridLayout_2")
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox.setObjectName("groupBox")
self.gridLayout.addWidget(self.groupBox, 0, 0, 1, 3)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem, 0, 3, 1, 1)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem1, 1, 0, 1, 1)
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setObjectName("pushButton")
self.gridLayout.addWidget(self.pushButton, 1, 1, 1, 1)
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem2, 1, 2, 1, 1)
self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)
subWindow2.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(subWindow2)
self.menubar.setGeometry(QtCore.QRect(0, 0, 366, 23))
self.menubar.setObjectName("menubar")
subWindow2.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(subWindow2)
self.statusbar.setObjectName("statusbar")
subWindow2.setStatusBar(self.statusbar)
self.retranslateUi(subWindow2)
QtCore.QMetaObject.connectSlotsByName(subWindow2)
def retranslateUi(self, subWindow2):
_translate = QtCore.QCoreApplication.translate
subWindow2.setWindowTitle(_translate("subWindow2", "Sub Ventana 2"))
self.groupBox.setTitle(_translate("subWindow2", "Imagen procesada"))
self.pushButton.setText(_translate("subWindow2", "Ver"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
subWindow2 = QtWidgets.QMainWindow()
ui = Ui_subWindow2()
ui.setupUi(subWindow2)
subWindow2.show()
sys.exit(app.exec_())
from PyQt5 import QtCore, QtGui, QtWidgets
from ui_mainwindow import Ui_mainWindow
from subVENTANA1 import Ui_subWindow1
class MainWindow(QtWidgets.QMainWindow, Ui_mainWindow):
def __init__(self, parent=None):
QtWidgets.QMainWindow.__init__(self, parent=parent)
self.setupUi(self)
subwindow1 = QtWidgets.QMdiSubWindow()
# create the widget instance
window1 = QtWidgets.QMainWindow()
# create the ui class instance
ui = Ui_subWindow1()
# set the ui for the widget instance
ui.setupUi(window1)
# set the widget for the subwindow
subwindow1.setWidget(window1)
self.mdiArea.addSubWindow(subwindow1)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())