我试图这样做,当一个值不等于另一个值时,它会绘制一个矩形。这是我的代码。
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
语句时,它将打印出来。
因此,我可以告诉我操作数的不等于不起作用,有人能看到我的代码出了什么问题吗?
答案 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(),但是你不打算调用它,你想看到什么?
是的,我看到你的编辑和功能有效,它打印测试。