Python tkinter,canvas don';不显示
使用tkinter时,画布对我不起作用,我可以使用菜单,也可以使用顶级窗口,但不能使用画布。以下是我的例子: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)
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语句,并且还引用了一些不存在的类方法。帮助我们通过发布工作代码来帮助您。