python - 不等于运算符不起作用
我想让程序在一个值不等于另一个值的时候画一个矩形。下面是我的代码。
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()