2014-10-14 5 views
-2

나는 다음과 같은 오류가이 코드를 실행하는 동안 오류가 계속 :나가서 설명하자면 NameError '메뉴'정의되지 않은 파이썬 Tkinter를

나가서 설명하자면 NameError : 이름 '메뉴가'정의되지 않은

import Tkinter as tk 
import Tkinter 

class Navbar: 
    menu = Menu() 
    root.config(menu=menu) 

    fileMenu = Menu(menu) 
    menu.add_cascade(label='File', menu=fileMenu) 
    fileMenu.add_command(label='New', command=doNothing) 
    fileMenu.add_separator() 
    fileMenu.add_command(label='Settings', command=doNothing) 
    fileMenu.add_separator() 
    fileMenu.add_command(label='Quit', command=doNothing) 
class MainApplication(tk.Frame): 
    def __init__(self, parent, *args, **kwargs): 
     tk.Frame.__init__(self, parent, *args, **kwargs) 
     self.navbar = Navbar(self) 
     self.navbar.pack(side="left", fill="y") 
if __name__ == "__main__": 
    root = tk.Tk() 
    MainApplication(root).pack(side="top", fill="both", expand=True) 
    root.mainloop() 

이 오류가 발생하는 이유는 무엇이며이 오류가 발생하지 않도록하려면 어떻게해야합니까?

+1

menu라는 함수 또는 클래스가 있습니까? – Anthony

+0

음, '메뉴'는 어디에 정의되어 있습니까? 'tk.Menu'? 또한 왜 Tkinter를 두 번 가져 옵니까? 별칭을 지정하고 일관성을 유지할지 여부를 결정하십시오. – jonrsharpe

+0

이 질문은 완전히 다른 질문으로 편집되었습니다. 대답을 이해할 수 있도록 원래의 질문으로 되돌 렸습니다. 질문 할 따로 질문이 있으면 다른 질문을하십시오. –

답변

2

MenuTkinter 모듈의 명령입니다. TkFrame도 사용하고 있습니다. 모듈을 두 번 가져 오기 때문에 Tkinter.Menu(...) 또는 tk.Menu(...)과 같이 호출 할 수 있습니다.

보통 Tkinter를 한 번만 가져오고 싶습니다. 내 생각 엔 여러 소스에서 코드를 복사하여 붙여 넣는 것입니다. 내 추천은 import Tkinter as tk을 수행 한 다음 모든 tkinter 기능에 접두어 tk.을 사용하는 것입니다. 나는 그것이 코드를 이해하기 쉽게 만든다고 생각한다.

+0

브라이언에게 도움을 주셔서 감사합니다. 당신은 프로그래밍에 익숙하지 않다는 것을 알 수 있습니다. 나는 라벨에이 문제가있어 왜 내가 잘못 될지 알게 될 것입니다. 도움을 주셔서 다시 한번 감사드립니다. – BEE

+0

아무 문제가 해결되지 않았습니다. – BEE

관련 문제