python-不等于操作数不工作
我试图使它成为这样,当一个值不等于另一个值时,它将绘制一个矩形。这是我的密码python-不等于操作数不工作,python,python-3.x,tkinter,python-3.3,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.cre
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
(反之亦然),则应打印“测试”。但是,它没有打印,甚至没有运行“绘制矩形”代码
但是,当我在if
语句之前放置另一个伪print
语句时,它将打印该语句
因此,我可以看出我的“不等于”操作数不起作用,有人能看出我的代码有什么问题吗?您可能不应该将根Tk对象放在函数中。我不完全确定tkinter
是如何构造的,但是将根
移到函数之外可能是一个好主意——此外,在执行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()
您似乎没有执行b
功能。您正在定义它,但没有运行它
向我们展示伪打印工作的代码——它是否在b
定义中?我对此表示怀疑。您在函数a()中定义了函数b(),但您不调用它,您想看到什么
编辑:
是的,我看到您的编辑和功能工作正常,它是打印测试。删除功能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()
很抱歉就像克里斯·约翰逊说的,我应该用B来代替“支票”。你好。它确实打印了伪语句,但是矩形没有绘制?@monkey334——请参阅我的更新。您从未使小部件可见(使用tkinter的几何管理器之一,例如.grid
或.pack
)。您好!这是完美的。但是,如果条件不满足,我认为我的after循环似乎不会继续循环。有没有办法让它一直循环直到满意?例如,一旦用户输入一个数字来更改c1和c2?请查看我在代码中对Chris Johnson评论的新编辑。您需要将root.mainloop()
添加到a()
方法的末尾,否则它将永远不会绘制应用程序。您还忘记了.pack()
您的画布小部件。“当我在if
语句之前放置另一个虚拟打印
语句时,它将打印该语句。”您确定吗?如果我在def b():
和If c1!=c2:
,我根本看不到任何输出。程序只是立即终止。但是如果他删除b
,他的根目录。after(10,b)
调用将不再有效。