【问题标题】:tkinter canvas gui does not load [closed]tkinter canvas gui不加载[关闭]
【发布时间】:2017-09-23 07:44:18
【问题描述】:

我是一名新程序员,在使用类和 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()

我想做一个程序,画布中椭圆的颜色会根据按钮而变化。非常感谢任何有关如何解决此问题的建议!

【问题讨论】:

  • 确保标题是一个问题,而不是“征求意见”
  • 是的,我更新了它,但无济于事......
  • 我根本无法运行这段代码,有几个明确的错误消息。你在哪个版本的python 2上?您不应在同一画布中混合使用 gridpack(请参阅 here)。
  • 它的 python 2.7 不是 1.0
  • 我看到了 3 个主要问题。首先是包/网格问题(参见前面评论中的链接),创建Buttons 时缺少command 参数以及您没有将函数作为您打算用于command 的参数传递的事实。我得到一个明确的错误,您的环境是否会向您隐藏错误?试试this 解决了吗?

标签: python tkinter tkinter-canvas


【解决方案1】:

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

不管怎样,这里是错误的代码,阻止它运行已修复。

  1. 不要在同一个主窗口中使用gridpack
  2. command 参数添加到Button 构造函数。
  3. 将函数作为参数传递给命令,我更改了您必须使用闭包的内容,以允许您仍然指定颜色参数。它基本上只是在另一个函数中创建一个函数并返回该内部函数,并带有一些预加载状态(即x),以便稍后调用。

代码:

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

还请注意,正如 cmets 中所建议的,您无需删除并重新创建椭圆。您可以重新配置现有的。

【讨论】:

  • @Newbie 这回答了你的问题吗?如果是这样,请考虑通过单击对勾来接受它。
猜你喜欢
  • 2012-05-21
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
相关资源
最近更新 更多