Python tkinter画布gui未加载

Python tkinter画布gui未加载,python,tkinter,tkinter-canvas,Python,Tkinter,Tkinter Canvas,我是一个新的程序员,在使用类和Tkinter方面比较新。我遇到了一个问题,我的Tkinter窗口不会弹出,也不会显示任何错误 import Tkinter from Tkinter import Canvas, Button root = Tkinter.Tk() canvas = Canvas(root, width=360, height=360, bg="white") canvas.grid() color = canvas.create_oval(100, 100, 160, 16

我是一个新的程序员,在使用类和Tkinter方面比较新。我遇到了一个问题,我的Tkinter窗口不会弹出,也不会显示任何错误

import Tkinter
from Tkinter import Canvas, Button

root = Tkinter.Tk()
canvas = Canvas(root, width=360, height=360, bg="white")
canvas.grid()

color = canvas.create_oval(100, 100, 160, 160, fill = "white")

def changeColor(x):
    canvas.delete(color)
    c = canvas.create_oval(100, 100, 160, 160)
    canvas.itemconfigure(c,fill = x)


pink = Button(root, text = "This is just a button",changeColor("pink"))
pink.pack()

brown = Button(root, text = "This is brown",changeColor("brown"))
brown.pack()

root.mainloop()

我想制作一个程序,画布上椭圆形的颜色根据按钮的不同而变化。非常感谢您对如何解决此问题的任何建议

如果您的环境对您隐藏了
tkinter
错误消息,我会很担心。如果您再次遇到这种情况,我建议尽可能在IDE/环境之外运行代码

不管怎么说,下面是阻止它运行的错误代码

  • 不要在同一主窗口中使用
    grid
    pack
  • 命令
    参数添加到
    按钮
    构造函数
  • 将函数作为参数传递给命令,我更改了必须使用闭包的内容,以允许您仍然指定颜色参数。它基本上只是在另一个函数中创建一个函数,并返回该内部函数,以及一些预加载状态(即
    x
    ),以供以后调用
  • 代码:


    另外请注意,正如注释中所建议的,您不需要删除并重新创建椭圆。您可以重新配置现有的标题。

    确保标题是一个问题,而不是“征求意见”是的,我更新了它,但没有用……我根本无法运行此代码,有几个明显的错误消息。您使用的是哪个版本的python 2?您不应该在同一画布中混合使用
    grid
    pack
    (参见)。首先是包/网格问题(参见前面评论中的链接),创建
    按钮时缺少
    命令
    参数,以及没有传递函数作为
    命令
    的参数。我得到一个明确的错误,您的环境是否可以对您隐藏这些错误?试试看,能修好吗?@新手回答你的问题了吗?如果是这样,请考虑通过点击滴答声来接受它。
    import Tkinter
    from Tkinter import Canvas, Button
    
    root = Tkinter.Tk()
    canvas = Canvas(root, width=360, height=360, bg="white")
    canvas.grid()
    
    color = canvas.create_oval(100, 100, 160, 160, fill = "white")
    
    def changeColor(x):
        def f():
            canvas.itemconfig(color, fill = x)
    
        return f
    
    
    pink = Button(root, text = "This is just a button", command=changeColor("pink"))
    pink.grid()
    
    brown = Button(root, text = "This is brown", command=changeColor("brown"))
    brown.grid()
    
    root.mainloop()