2013-11-02 2 views
1

캔버스가 tkinter를 사용하여 나를 위해 작동하지 않습니다. 메뉴 작업도 있고 최상위 창이지만 캔버스가 아닙니다. 내 예가 여기에 있습니다.파이썬 tkinter, 캔버스가 표시되지 않음

class Interface(Frame): 
    def __init__(self, master=None): 
     self.__loadSettings() 
     Frame.__init__(self,master) 
     self.m=Menu(self) 
     menu = Menu(self.m, tearoff=0) 
     self.m.add_cascade(label="File", menu=menu) 
     menu.add_command(label="New", command=self.__newGame) 
     menu = Menu(self.m, tearoff=0) 
     self.m.add_cascade(label="Edit", menu=menu) 
     menu.add_command(label="Settings", command=self.__settings) 
     self.master.config(menu=self.m) 
     self.canvas= Canvas(self,height=500, width=500) 
     self.canvas.create_rectangle(100,100,400,400, fill="blue") 

root = Tk() 
ui = Interface(root) 
ui.mainloop() 

캔버스가 아니라 창과 메뉴가 작동합니다.

+0

이 코드는 게시 된대로 작동하지 않습니다. 실제 작업 코드를 게시하면 사람들이 귀하를 도울 수 있습니다. 위의 코드에는 import 문이 없으며 존재하지 않는 몇 가지 클래스 메서드를 참조합니다. 작업 코드를 게시하여 우리를 도울 수 있도록 도와주십시오. –

답변

1

첫 번째 문제는 캔버스를 프레임 (예 : Interface)에 넣지 만이 프레임을 보이지 않게 만드는 것입니다. 이 프레임은 전체 UI (내가 있으리라 믿고있어)을 할 수 있도록 설계되어 있기 때문에, 당신은이 작업을 수행 할 수 있습니다 나는 ui 객체에 pack 전화

root = Tk() 
ui = Interface(root) 
ui.pack(side="top", fill="both", expand=True) 
ui.mainloop() 

공지 사항.

문제의 절반 만 해결합니다. 두 번째 문제점은 캔버스를 부모에서 볼 수 없게 만드는 것입니다. 이 경우 pack, grid 또는 place을 사용할 수 있습니다.

self.canvas.pack(side="top", fill="both", expand=True) 

당신은뿐만 아니라 세 번째 문제를 갖고있는 것 같다 - 만약 당신이 메뉴를 만들하지만 당신은 하나, 볼 수 있도록 원인이되지 않습니다 여기에 내가 pack를 사용합니다. 메뉴 모음의 경우 일반적으로 루트 창의 menu 속성 값으로 지정합니다. 귀하의 경우에는 다음과 같이하십시오 :

self.master.configure(menu=self.m) 
관련 문제