>

클래스를 사용하여 더 객체 지향 접근 방식을 시도하고 있지만 다음과 같은 오류가 발생하는 것 같습니다.

와이즈 비즈

컴파일하려는 코드는 다음과 같습니다. 간단한 코드로 세분화하여 오류가 발생했습니다.

Traceback (most recent call last): File "./Main.py", line 17, in Main = Menu(root) File "./Main.py", line 11, ininit self.F1.pack(fill=X) NameError: global name 'X' is not defined

#!/usr/bin/python import Tkinter as tk # Python 2 import class Menu: def __init__(self, parent): self.root = parent self.root.geometry("800x400") self.root.title("Image Compression") self.F1 = tk.Frame(self.root, bg="black") self.F1.pack(fill=X) if __name__ == "__main__": root = tk.Tk() Main = Menu(root) root.mainloop()

  • 답변 # 1

    귀하의

    self.F1.pack(fill=X)
    
    

    해야합니다

    self.F1.pack(fill=tk.X)
    
    

    그리고 expand=True 도 추가해야합니다  채우기가 실제로 작동하도록합니다. Tkinter.X 및 Tkinter.Y 및 Tkinter.BOTH는 Tkinter 모듈에 정의 된 상수 (문자열)입니다. Tkinter. 없이 , 변수로X에 액세스하려고합니다. 당신의 라인은

    self.F1.pack(fill=tk.X, expand=True)
    
    

    원하는 일을하려면

    아, 한 번 더 생각하고 ... "이봐! 전에 .pack (fill = X)가 작동하는 것을 본 적이있다!"

    from Tkinter import *
    
    
    참조 위의

    문. 그런 경우X는 Tkinter에서 나온 것으로 볼 수 있지만 최고의 Tkinter. 가 필요하지 않습니다. . 이것이 네임 스페이스의 주제이며,이 답변의 범위를 벗어납니다.

관련 자료

  • 이전 python - kivy - 버튼 삭제시 'nonetype'오브젝트를 호출 할 수 없음
  • 다음 javascript - Bootstrap 4 last version 캐러 설 버튼이 작동하지 않습니다