python - 不等于运算符不起作用

-1 投票
4 回答
659 浏览
提问于 2025-04-20 17:38

我想让程序在一个值不等于另一个值的时候画一个矩形。下面是我的代码。

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"test"。可是它没有打印,也没有执行画矩形的代码。

不过,当我在 if 语句之前加一个测试用的 print 语句时,它会正常打印出来。

所以我可以确定我的“不等于”这个条件没有起作用,谁能帮我看看我的代码哪里出问题了?

4 个回答

0

你在函数a()里面定义了一个函数b(),但是你没有调用它,那你想看到什么呢?

编辑:

是的,我看到了你的编辑,函数运行了,它打印了“test”。

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

你似乎没有在运行 b 这个函数。你只是定义了它,但并没有执行。

给我们看看那个可以打印的代码——它是在 b 的定义里面吗?我觉得不太可能。

4

你可能不应该把你的根Tk对象放在一个函数里面。我对tkinter的结构不是很确定,但把root移到函数外面可能是个好主意。此外,在你调用after之前,你需要进入tkinter的主循环,这样它才会执行:

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

撰写回答