Объяснение:
В соответствии с вашим кодом вы создаете объект IpLogger, этот объект IpLogger создает в своем методе loggerUI, что он выполняется при создании объекта Media (), этот новый объект делает то же самое в mediaUI (), то есть создает другой объект IpLogger, то есть вы делаете следующее:
IpLogger->loggerUI->Media->mediaUI->IpLogger->loggerUI->Media->...
Решение:
В соответствии с тем, что объясняется в сообщении OP, вы хотите только иметь один объект IpLogger и один объект Media, поэтому оба объекта можно создавать в оконной функции и использовать соединения для обмена видимостью одного или другого в зависимости от случая.
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class IpLogger(QtWidgets.QMainWindow):
def __init__(self):
super(IpLogger, self).__init__()
self.setWindowTitle("Main window")
self.setFixedSize(648, 228)
self.setWindowIcon(QtGui.QIcon("data\\icon\\WiFicon.ico"))
self.loggerUI()
def loggerUI(self):
# Define font variable
font = QtGui.QFont()
# Button leading to second window
self.mediaBtn = QtWidgets.QPushButton(self)
self.mediaBtn.setGeometry(QtCore.QRect(10, 180, 181, 41))
font.setPointSize(10)
self.mediaBtn.setFont(font)
self.mediaBtn.setObjectName("mediaBtn")
self.mediaBtn.setText("Social Media")
class Media(QtWidgets.QMainWindow):
def __init__(self):
super(Media, self).__init__()
self.setWindowTitle("Second window")
self.setFixedSize(300, 180)
self.setWindowIcon(QtGui.QIcon("data\\icon\\WiFicon.ico"))
self.mediaUI()
def mediaUI(self):
# Variables
font = QtGui.QFont()
# Button leading back to the main menu
self.backBtn = QtWidgets.QPushButton(self)
self.backBtn.setGeometry(QtCore.QRect(130, 123, 40, 40))
font.setFamily("Segoe UI")
font.setPointSize(10)
self.backBtn.setFont(font)
self.backBtn.setObjectName("backBtn")
self.backBtn.setStyleSheet("background-color: rgb(69, 69, 69, 0)")
self.backBtn.setIcon(QtGui.QIcon("data\\icon\\back.png"))
self.backBtn.setIconSize(QtCore.QSize(40, 40))
def window():
app = QtWidgets.QApplication(sys.argv)
win = IpLogger()
media = Media()
win.mediaBtn.clicked.connect(media.show)
win.mediaBtn.clicked.connect(win.close)
media.backBtn.clicked.connect(win.show)
media.backBtn.clicked.connect(media.close)
win.show()
sys.exit(app.exec_())
if __name__ == "__main__":
window()