PyQt5 : RecursionError : Python 객체를 호출하는 동안 최대 재귀 깊이를 초과했습니다.

재칼

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()
Eyllanesc

설명:

코드에 따라 IpLogger 객체를 생성하면이 IpLogger 객체는 Media () 객체가 빌드 될 때 실행되는 loggerUI 메서드에서 생성하고, 새 객체는 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()

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

RecursionError at : Python 객체를 호출하는 동안 최대 재귀 깊이를 초과했습니다.

분류에서Dev

Andrew의 곡선 : Python 객체를 호출하는 동안 최대 재귀 깊이를 초과했습니다.

분류에서Dev

RecursionError : 스레드를 사용하는 동안 최대 재귀 깊이를 초과했습니다.

분류에서Dev

RuntimeError : DB에서 다각형 포인트를 가져 오는 동안 Python 객체를 호출하는 동안 최대 재귀 깊이를 초과했습니다.

분류에서Dev

예외 값 방지 : Django 신호에서 Python 객체를 호출하는 동안 최대 재귀 깊이 초과

분류에서Dev

예외 값 방지 : Django 신호에서 Python 객체를 호출하는 동안 최대 재귀 깊이 초과

분류에서Dev

메서드 이름을 인쇄 할 때 Python 개체를 호출하는 동안 최대 재귀 깊이를 초과했습니다.

분류에서Dev

파이썬 재귀 오류 : RecursionError는 : 파이썬 객체를 호출하는 동안 최대 재귀 수준 초과

분류에서Dev

RecursionError : Odoo 13에서 최대 재귀 깊이를 초과했습니다.

분류에서Dev

파이썬 객체를 호출하는 동안 초과 된 최대 재귀 깊이를 해결하는 방법

분류에서Dev

recursionerror : skopt를 사용한 tensorflow와 비교하여 최대 재귀 깊이가 초과되었습니다.

분류에서Dev

"read"메소드로 파이썬 객체를 호출하는 동안이 "RuntimeError"를 어떻게 해결합니까? : << 최대 재귀 깊이 초과 >>

분류에서Dev

아름다운 수프와 파이썬. "파이썬 객체를 호출하는 동안 최대 재귀 깊이가 초과되었습니다"오류가 발생하여 재귀가있는 모든 노드를 가져올 수 없습니다.

분류에서Dev

Sqlalchemy를 사용하여 최대 재귀 깊이를 초과했습니다.

분류에서Dev

내 Django 신호에서 최대 재귀 깊이를 초과했습니다.

분류에서Dev

두 개체를 비교하는 동안 최대 재귀 수준을 초과했습니다.

분류에서Dev

Python Tkinter : RecursionError : 최대 재귀 깊이 초과

분류에서Dev

Python 복합 설계 패턴-RecursionError : 최대 재귀 깊이 초과

분류에서Dev

Python : 목록이있는 객체를 목록이있는 다른 객체에 추가합니다. 최대 재귀 깊이 초과

분류에서Dev

모듈을 설치할 때 Python 최대 재귀 깊이를 초과했습니다.

분류에서Dev

RuntimeError : 기본 해시 방법을 사용하여 최대 재귀 깊이를 초과했습니다.

분류에서Dev

최대 재귀 깊이가 discord.py 봇 루프를 초과했습니다.

분류에서Dev

변수 인수를 사용하는 Python "비교에서 최대 재귀 깊이 초과". 그러나 목록에서는 잘 작동합니다.

분류에서Dev

/ graphql의 RecursionError. 최대 재귀 깊이 초과

분류에서Dev

python pong의 __instancecheck__에서 최대 재귀 깊이를 초과하면 어떻게해야합니까?

분류에서Dev

함수는 없음을 반환하거나 "최대 재귀 깊이를 초과했습니다"라고 말합니다.

분류에서Dev

범주 형 변수를 요약 할 때 최대 재귀 깊이를 초과했습니다.

분류에서Dev

재귀 함수에서 최대 호출 스택 크기를 초과했습니다.

분류에서Dev

생성 할 때 Django 모델에서 최대 재귀 깊이를 초과했습니다.

Related 관련 기사

  1. 1

    RecursionError at : Python 객체를 호출하는 동안 최대 재귀 깊이를 초과했습니다.

  2. 2

    Andrew의 곡선 : Python 객체를 호출하는 동안 최대 재귀 깊이를 초과했습니다.

  3. 3

    RecursionError : 스레드를 사용하는 동안 최대 재귀 깊이를 초과했습니다.

  4. 4

    RuntimeError : DB에서 다각형 포인트를 가져 오는 동안 Python 객체를 호출하는 동안 최대 재귀 깊이를 초과했습니다.

  5. 5

    예외 값 방지 : Django 신호에서 Python 객체를 호출하는 동안 최대 재귀 깊이 초과

  6. 6

    예외 값 방지 : Django 신호에서 Python 객체를 호출하는 동안 최대 재귀 깊이 초과

  7. 7

    메서드 이름을 인쇄 할 때 Python 개체를 호출하는 동안 최대 재귀 깊이를 초과했습니다.

  8. 8

    파이썬 재귀 오류 : RecursionError는 : 파이썬 객체를 호출하는 동안 최대 재귀 수준 초과

  9. 9

    RecursionError : Odoo 13에서 최대 재귀 깊이를 초과했습니다.

  10. 10

    파이썬 객체를 호출하는 동안 초과 된 최대 재귀 깊이를 해결하는 방법

  11. 11

    recursionerror : skopt를 사용한 tensorflow와 비교하여 최대 재귀 깊이가 초과되었습니다.

  12. 12

    "read"메소드로 파이썬 객체를 호출하는 동안이 "RuntimeError"를 어떻게 해결합니까? : << 최대 재귀 깊이 초과 >>

  13. 13

    아름다운 수프와 파이썬. "파이썬 객체를 호출하는 동안 최대 재귀 깊이가 초과되었습니다"오류가 발생하여 재귀가있는 모든 노드를 가져올 수 없습니다.

  14. 14

    Sqlalchemy를 사용하여 최대 재귀 깊이를 초과했습니다.

  15. 15

    내 Django 신호에서 최대 재귀 깊이를 초과했습니다.

  16. 16

    두 개체를 비교하는 동안 최대 재귀 수준을 초과했습니다.

  17. 17

    Python Tkinter : RecursionError : 최대 재귀 깊이 초과

  18. 18

    Python 복합 설계 패턴-RecursionError : 최대 재귀 깊이 초과

  19. 19

    Python : 목록이있는 객체를 목록이있는 다른 객체에 추가합니다. 최대 재귀 깊이 초과

  20. 20

    모듈을 설치할 때 Python 최대 재귀 깊이를 초과했습니다.

  21. 21

    RuntimeError : 기본 해시 방법을 사용하여 최대 재귀 깊이를 초과했습니다.

  22. 22

    최대 재귀 깊이가 discord.py 봇 루프를 초과했습니다.

  23. 23

    변수 인수를 사용하는 Python "비교에서 최대 재귀 깊이 초과". 그러나 목록에서는 잘 작동합니다.

  24. 24

    / graphql의 RecursionError. 최대 재귀 깊이 초과

  25. 25

    python pong의 __instancecheck__에서 최대 재귀 깊이를 초과하면 어떻게해야합니까?

  26. 26

    함수는 없음을 반환하거나 "최대 재귀 깊이를 초과했습니다"라고 말합니다.

  27. 27

    범주 형 변수를 요약 할 때 최대 재귀 깊이를 초과했습니다.

  28. 28

    재귀 함수에서 최대 호출 스택 크기를 초과했습니다.

  29. 29

    생성 할 때 Django 모델에서 최대 재귀 깊이를 초과했습니다.

뜨겁다태그

보관