python - 不等于Opera不工作

时间:2014-09-09 18:02:57

标签: python python-3.x tkinter python-3.3

我试图这样做,当一个值不等于另一个值时,它会绘制一个矩形。这是我的代码。

import tkinter
def a():
    c1 = 1
    c2 = 2
    root = tkinter.Tk()
    canvas = tkinter.Canvas(root, width=800, height=600)

    def b():
        if c1 != c2:
            print ("test")
            canvas.create_rectangle(100, 100, 500, 500, fill='blue')
            root.after(10, b)
    root.after(10, b)
a()

正如您所看到的,在函数b中,如果变量c1不等于c2(反之亦然),那么它应print & #34;测试" 即可。但它不是打印,也不是运行绘制矩形代码。

但是,当我在print语句之前放置另一个虚拟if语句时,它将打印出来。

因此,我可以告诉我操作数的不等于不起作用,有人能看到我的代码出了什么问题吗?

4 个答案:

答案 0 :(得分:4)

你可能不应该在函数中包含你的根Tk对象。我不完全确定tkinter是如何构建的,但将root移到函数外部可能是一个好主意 - 此外,您需要在任何之前输入tkinter主循环你的after电话会执行:

import tkinter
root = tkinter.Tk()

def a():
    c1 = 1
    c2 = 2

    canvas = tkinter.Canvas(root, width=800, height=600)
    canvas.pack()

    def b():
        if c1 != c2:
            print ("test")
            canvas.create_rectangle(100, 100, 500, 500, fill='blue')
            root.after(10, b)
    root.after(10, b)
a()
root.mainloop()

答案 1 :(得分:1)

您似乎没有执行b功能。你正在定义它但没有运行它。

显示使用虚拟打印工作的代码 - 是否在b定义中?我对此表示怀疑。

答案 2 :(得分:1)

删除功能b

import tkinter
def a():
     c1 = 1
     c2 = 2
     root = tkinter.Tk()
     canvas = tkinter.Canvas(root, width=800, height=600)

    if c1 != c2:
        print ("test")
        canvas.create_rectangle(100, 100, 500, 500, fill='blue')
        root.after(10, check)
    root.after(10, check)
a()

答案 3 :(得分:0)

你在函数a()中定义函数b(),但是你不打算调用它,你想看到什么?

编辑:

是的,我看到你的编辑和功能有效,它打印测试。