<p>欢迎来到StackOverflow!我知道您已经接受了答案,但我想向您展示我对代码的看法:</p>
<pre class="lang-py prettyprint-override"><code>import tkinter as tk
import tkinter.ttk as ttk
import PIL.ImageTk
import PIL.Image
root = tk.Tk()
root.title("Guess Geek")
root.geometry("1280x720")
root.resizable(0, 0)
def importimg(file_name):
return PIL.ImageTk.PhotoImage(PIL.Image.open(file_name))
bg_img = importimg('main1.jpg')
bg = ttk.Label(root, image=bg_img)
bg.grid(column=0, row=0)
root.mainloop()
</code></pre>
<p>以下是我在您的代码中所做的更改:</p>
<ul>
<li>我没有将<code>tkinter</code>和<code>tkinter.ttk</code>的所有元素都放在全局范围内,而是只导入了模块</li>
<li>我把<code>tkinter</code>改名为<code>tk</code>,把<code>tkinter.ttk</code>改名为<code>ttk</code>,以便于使用较短的名称</li>
<li>我导入了<code>PIL.ImageTk</code>模块,但没有将它们引入全局范围,只是为了确定它的来源</li>
<li>我导入了<code>PIL.Image</code>模块,但没有将它们放在全局范围内,因为如果将这两个模块都放在全局范围内,则有一个<code>tkinter.Image</code>会覆盖它(您编写代码的方式)</li>
<li><a href="https://pillow.readthedocs.io/en/stable/reference/ImageTk.html#PIL.ImageTk.PhotoImage" rel="nofollow noreferrer">^{<cd10>}</a>第一个参数应该是PIL的映像(由<a href="https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.open" rel="nofollow noreferrer">^{<cd11>}</a>轻松提供),而不是文件名</li>
<li><code>importimg()</code>返回从类<code>PIL.ImageTk.PhotoImage()</code>创建的对象。这将被分配给<code>bg_img</code></li>
<li>我没有使用<code>place()</code>几何体管理器,而是使用了<code>grid()</code>的几何体管理器。它通常由TkDocs网站提供</li>
</ul>
<p>如果你有任何问题,尽管问</p>