【发布时间】:2020-01-29 04:31:10
【问题描述】:
我一直在尝试使用 PyQt5 库开发一个多窗口应用程序。我想有一个专门用于单独功能的第二个窗口。我能够毫无问题地从主窗口切换到辅助窗口。然而,在尝试切换回来后,我得到了递归错误异常。以下是相关代码:
import os
import sys
from functools import partial
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QApplication, QFrame, QMessageBox, QMenu
class IpLogger(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")
self.mediaBtn.clicked.connect(partial(self.showWindow, Media()))
#Switching windows
def showWindow(self, window):
self.win = window
self.win.show()
self.close()
class Media(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))
self.backBtn.clicked.connect(partial(self.showWindow, IpLogger()))
#Switching windows
def showWindow(self, window):
self.win = window
self.win.show()
self.close()
def window():
app = QApplication(sys.argv)
win = IpLogger()
win.show()
sys.exit(app.exec_())
window()
【问题讨论】:
-
好的,我会这样做的
-
现在应该可以重现了。