Python tkinter,canvas don';不显示

Python tkinter,canvas don';不显示,python,tkinter,Python,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)

使用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()

窗口和菜单起作用,但画布不起作用。

第一个问题是,您将画布放在一个框架中(一个
界面的实例),但从未使该框架可见。由于此框架设计为整个UI(我假设),因此您可以执行以下操作:

root = Tk()
ui = Interface(root)
ui.pack(side="top", fill="both", expand=True)
ui.mainloop()
注意,我在
ui
对象上调用
pack

这只解决了问题的一半。第二个问题是您没有使画布在其父级中可见。您可以使用
pack
grid
place
进行此操作。在这里,我使用
pack

self.canvas.pack(side="top", fill="both", expand=True)
您似乎还有第三个问题——您正在创建菜单,但也没有使其可见。对于菜单栏,通常将其作为根窗口的
菜单
属性的值。在您的情况下,您可能希望执行以下操作:

self.master.configure(menu=self.m)

第一个问题是,您将画布放在一个框架(接口的一个实例)中,但从未使该框架可见。由于此框架设计为整个UI(我假设),因此您可以执行以下操作:

root = Tk()
ui = Interface(root)
ui.pack(side="top", fill="both", expand=True)
ui.mainloop()
注意,我在
ui
对象上调用
pack

这只解决了问题的一半。第二个问题是您没有使画布在其父级中可见。您可以使用
pack
grid
place
进行此操作。在这里,我使用
pack

self.canvas.pack(side="top", fill="both", expand=True)
您似乎还有第三个问题——您正在创建菜单,但也没有使其可见。对于菜单栏,通常将其作为根窗口的
菜单
属性的值。在您的情况下,您可能希望执行以下操作:

self.master.configure(menu=self.m)

此代码与发布的代码不一样。如果您发布实际的工作代码,人们将更能帮助您。上面的代码缺少import语句,并且还引用了一些不存在的类方法。帮助我们通过发布工作代码来帮助您。此代码与发布的代码不同。如果您发布实际的工作代码,人们将更能帮助您。上面的代码缺少import语句,并且还引用了一些不存在的类方法。帮助我们通过发布工作代码来帮助您。