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

메디 레자 그 헤 블라

각각 이미지를 개별적으로 표시하는 4 개의 프레임으로 분할 된 이미지 뷰어를 만들려고합니다.이 오류가 계속 발생합니다.

Traceback (most recent call last):
  File "c:/Users/EM/Desktop/Scripts/gui/slideshow_model/slide_show_class.py", line 60, in <module>
    slideshow_model = SlideshowModel(root)
  File "c:/Users/EM/Desktop/Scripts/gui/slideshow_model/slide_show_class.py", line 22, in __init__
    self.frame_1, width=self.grid_w, height=self.grid_height)
  File "C:\Users\EM\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 2098, in __getattr__
    return getattr(self.tk, attr)
  File "C:\Users\EM\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 2098, in __getattr__
    return getattr(self.tk, attr)
  File "C:\Users\EM\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 2098, in __getattr__
    return getattr(self.tk, attr)
  [Previous line repeated 494 more times]
RecursionError: maximum recursion depth exceeded

내 수업은 다음과 같습니다.

import tkinter as tk
from PIL import ImageTk, Image

root = tk.Tk()


class SlideshowModel(tk.Tk, tk.Frame):

    def __init__(self, master):
        self.master = root
        master.title('Basic Image Viewer')
        root.iconbitmap('../img/favicon.ico')
        root.state('zoomed')
        s_w = int(root.winfo_screenwidth())
        s_h = int(root.winfo_screenheight())
        self.grid_w = s_w // 2
        self.grid_h = s_h // 2
        self.frame_1 = tk.Frame(master, height=self.grid_h,
                                width=self.grid_w, bd=0)
        self.frame_1.grid(column=0, row=0)
        self.canvas_1 = tk.Canvas(
            self.frame_1, width=self.grid_w, height=self.grid_height)
        #self.frame_2 = tk.Frame(master, height=self.grid_h,
                                width=self.grid_w, bd=0, bg="black")
        #self.frame_2.grid(column=1, row=0)
        #self.frame_3 = tk.Frame(master, height=self.grid_h,
                                width=self.grid_w, bd=0, bg="black")
        #self.frame_3.grid(column=0, row=1)
        #self.frame_4 = tk.Frame(master, height=self.grid_h,
                                width=self.grid_w, bd=0, bg="black")
        #self.frame_4.grid(column=1, row=1)

    # show image function
    # should contain grid coordinates
    # image dimensions calculator
    # should return the image object
    def resize_image(self, img_path):
        image = Image.open(img_path)
        w_coeff = image.width / self.grid_w
        h_coeff = image.height / self.grid_h
        w_coeff = 1 / w_coeff if w_coeff > 1 else w_coeff
        h_coeff = 1 / h_coeff if h_coeff > 1 else h_coeff
        # pick the smallest coeff to get the image as small
        # as should be
        coeff = min(w_coeff, h_coeff)
        image = image.resize(
            (int(image.width * coeff), int(image.height * coeff)), Image.ANTIALIAS)
        return image

    # this function should show returned image
    # takes: image object, master frame
    def show_image(self, resize_image, frame_x):
        image = ImageTk.PhotoImage(resize_image)
        # label = tk.Label(frame_x, image=image, bd=0)
        self.canvas_1(image=image, anchor='nw')


slideshow_model = SlideshowModel(root)

img1 = slideshow_model.resize_image('../img/sample.jpg')
# img2 = slideshow_model.resize_image('../img/sample.jpg')
# img3 = slideshow_model.resize_image('../img/sample.jpg')
# img4 = slideshow_model.resize_image('../img/sample.jpg')

slideshow_model.show_image(img1, slideshow_model.frame_1)
# slideshow_model.show_image(img2, slideshow_model.frame_2)
# slideshow_model.show_image(img3, slideshow_model.frame_3)
# slideshow_model.show_image(img4, slideshow_model.frame_4)

root.mainloop()

예외를 해결할 때까지 첫 번째 프레임에 초점을 맞추기 위해 세 개의 다른 프레임을 주석 처리했습니다. 나는 비슷한 게시 된 스레드를 조사해 왔으며, 내가 수집 할 수있는 것은 root.mainloop()함수가 두 번 이상 호출 되어 발생하는 원인입니다 . 무엇을 놓치고 있습니까?

미하일 일린

SlideshowModel (tk.Tk, tk.Frame) 클래스에서 "tk.Tk"및 "tk.Frame"을 제거하면 어떻게됩니까? 또한 self.grid_height를 self.grid_h로 바꿔야합니다 (22 행).

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

/ person /의 RecursionError가 __instancecheck__에서 초과 된 최대 재귀 깊이

분류에서Dev

Python의 런타임 오류 : "최대 재귀 깊이 초과"

분류에서Dev

Python 상속 문제 {RuntimeError} 최대 재귀 깊이 초과

분류에서Dev

깊이 우선 검색에서 Python "RuntimeError : 최대 재귀 깊이 초과"

분류에서Dev

파이썬 프로그래밍 오류 RecursionError : 비교에서 최대 재귀 깊이 초과

분류에서Dev

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

분류에서Dev

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

분류에서Dev

BeautifulSoup : RuntimeError : 최대 재귀 깊이 초과

분류에서Dev

Python 최대 재귀 깊이

분류에서Dev

Python 최대 재귀 깊이

분류에서Dev

Python을 사용한 웹 스크랩 핑 : RuntimeError 최대 재귀 깊이 초과

분류에서Dev

로그 아웃 (요청)시 최대 재귀 깊이 초과

분류에서Dev

PyQt wheelEvent 리디렉션 및 최대 재귀 깊이 초과

분류에서Dev

Django : "RuntimeError : 최대 재귀 깊이 초과"get_queryset 함수

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

Python 예외 : RuntimeError : 최대 재귀 깊이 초과 / 인쇄 할 수없는 런타임 오류

분류에서Dev

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

분류에서Dev

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

분류에서Dev

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

분류에서Dev

오류 발생 : 비교에서 최대 재귀 깊이가 초과 됨

분류에서Dev

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

Related 관련 기사

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

    / person /의 RecursionError가 __instancecheck__에서 초과 된 최대 재귀 깊이

  7. 7

    Python의 런타임 오류 : "최대 재귀 깊이 초과"

  8. 8

    Python 상속 문제 {RuntimeError} 최대 재귀 깊이 초과

  9. 9

    깊이 우선 검색에서 Python "RuntimeError : 최대 재귀 깊이 초과"

  10. 10

    파이썬 프로그래밍 오류 RecursionError : 비교에서 최대 재귀 깊이 초과

  11. 11

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

  12. 12

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

  13. 13

    BeautifulSoup : RuntimeError : 최대 재귀 깊이 초과

  14. 14

    Python 최대 재귀 깊이

  15. 15

    Python 최대 재귀 깊이

  16. 16

    Python을 사용한 웹 스크랩 핑 : RuntimeError 최대 재귀 깊이 초과

  17. 17

    로그 아웃 (요청)시 최대 재귀 깊이 초과

  18. 18

    PyQt wheelEvent 리디렉션 및 최대 재귀 깊이 초과

  19. 19

    Django : "RuntimeError : 최대 재귀 깊이 초과"get_queryset 함수

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

    Python 예외 : RuntimeError : 최대 재귀 깊이 초과 / 인쇄 할 수없는 런타임 오류

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

    오류 발생 : 비교에서 최대 재귀 깊이가 초과 됨

  29. 29

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

뜨겁다태그

보관