<p>错误<code>NameError: name 'photo' is not defined</code>来自此行:</p>
<pre><code>tktext_label.image = photo
</code></pre>
<p>正如错误所说,您从未定义过<code>photo</code>。我猜您只是从某个地方复制了这段代码,而不了解代码在做什么。在本例中,您复制的代码试图保存对先前创建的图像的引用。您重命名了图像或更改了此语句中的名称,从而导致了错误。它与创建第二个窗口无关</p>
<p>代码应该类似于以下内容,不过我添加了一些注释以显示需要使用相同名称的三个位置:</p>
<pre><code> img=PhotoImage(file='4 Dry Out Logo.png')
###
Label(self.win,image=img).pack()
###
tktext_label.image = img
###
</code></pre>
<p>您的问题是,您在最后一行中使用了<code>photo</code>,而您本应使用<code>img</code></p>
<p>代码的要点是,在创建图像后,它通过将图像指定给<code>tktext_label.image</code>来保存对图像的引用。保存引用的原因在问题<a href="https://stackoverflow.com/questions/16424091/why-does-tkinter-image-not-show-up-if-created-in-a-function">Why does Tkinter image not show up if created in a function?</a>的<a href="https://stackoverflow.com/questions/16424091">this answer</a>中解释</p>
<blockquote>
<p>Also, is there any way to resize the image to be smaller?</p>
</blockquote>
<p>A <a href="https://stackoverflow.com/questions/3177969/how-to-resize-an-image-using-tkinter">simple search of this site</a>将回答这个问题</p>