Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 画布不显示文本_Python_Python 3.x_Canvas_Tkinter - Fatal编程技术网

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)