Python 画布不显示文本
我的画布以随机变化的颜色显示一个矩形网格,但当我希望它结束时,它不会显示我添加到画布中的“再见!”消息。为什么呢 即使我在Python 画布不显示文本,python,python-3.x,canvas,tkinter,Python,Python 3.x,Canvas,Tkinter,我的画布以随机变化的颜色显示一个矩形网格,但当我希望它结束时,它不会显示我添加到画布中的“再见!”消息。为什么呢 即使我在\uuuu init\uuuu中为I注释行(即首先创建矩形的for循环),我也看不到文本 文本更新是在“更新”函数开始时,在最大迭代次数之后完成的 当更改为self.canvas.create_text(100100,text=“Bye Bye!”)时,它似乎确实起作用了。。。但仅当没有显示矩形时 当您使用time.sleep时,包括Tkinter主循环在内的所有内容都将停止
\uuuu init\uuuu
中为I注释行(即首先创建矩形的for循环),我也看不到文本
文本更新是在“更新”函数开始时,在最大迭代次数之后完成的
当更改为self.canvas.create_text(100100,text=“Bye Bye!”)
时,它似乎确实起作用了。。。但仅当没有显示矩形时
当您使用time.sleep
时,包括Tkinter主循环在内的所有内容都将停止。Tkinter mainloop负责更新UI,因此,只要您不返回mainloop,您就不会看到UI的任何更新,除非您手动更新它。因为您在睡眠之后立即销毁了UI,所以您永远不会看到带有文本的更新UI
基本上可以做两件事,要么在调用sleep
之前手动更新,要么在之后将sleep
调用更改为,这将返回到主循环并安排传递给它的函数
要手动更新,请在睡眠之前调用self.master.update()
要将睡眠
替换为之后的
,只需更改
sleep(2)
self.canvas.delete(tk.ALL)
self.master.destroy()
到
当您使用time.sleep
时,包括Tkinter主循环在内的所有内容都将停止。Tkinter mainloop负责更新UI,因此,只要您不返回mainloop,您就不会看到UI的任何更新,除非您手动更新它。因为您在睡眠之后立即销毁了UI,所以您永远不会看到带有文本的更新UI
基本上可以做两件事,要么在调用sleep
之前手动更新,要么在之后将sleep
调用更改为,这将返回到主循环并安排传递给它的函数
要手动更新,请在睡眠之前调用self.master.update()
要将睡眠
替换为之后的
,只需更改
sleep(2)
self.canvas.delete(tk.ALL)
self.master.destroy()
到
另一个问题-你知道如何使画布(除了文本)半透明吗?我不认为你可以对画布项目透明。最近的东西是点画
。如果将tags='rect'
添加到矩形创建中,可以使用self.canvas.itemconfig('rect',stipple='gray50')
一次为所有矩形设置点画模式。你可以找到点画选项(位图图像)。另一个问题-你知道如何使画布(文本除外)半透明吗?我认为你不能对画布项目进行透明。最近的东西是点画
。如果将tags='rect'
添加到矩形创建中,可以使用self.canvas.itemconfig('rect',stipple='gray50')
一次为所有矩形设置点画模式。您可以找到点画选项(即位图图像)。
self.master.after(2000, self.master.destroy)