Tkinter 2.7-图像不会出现在Tk.mainloop()的窗口中

时间:2018-04-06 18:40:44

标签: python python-2.7 tkinter

from Tkinter import Tk, PhotoImage, Label
def start_up():
    app = Tk()
    app.title("Tower")
    app.geometry('600x900')
    photo = PhotoImage("Python.png")
    label = Label(app, image = photo)
    label.pack()
    app.mainloop()
start_up()

我目前正在努力使用tkinter 2.7。我无法显示我想要的图像,因此请查看我的代码并帮我修复它。感谢。

1 个答案:

答案 0 :(得分:1)

from Tkinter import 

这是语法错误。使用from语法时,您需要列出要导入的名称。 (或者用星号来导入所有东西,但这不是好习惯,因为它会不必要地污染你的命名空间)

from Tkinter import Tk, PhotoImage, Label

label = Label(app, image = photo)
app.mainloop()
label.pack()

在调用mainloop之前,你应该pack()你的小部件。将其更改为:

label = Label(app, image = photo)
label.pack()
app.mainloop()

photo = PhotoImage("Python.png")

如果要将文件名传递给PhotoImage,则应该使用file关键字参数。此外,PhotoImage不知道如何打开png。尝试使用gif或pgm等格式。

photo = PhotoImage(file="Python.gif")

或者,安装第三方库Pillow,并使用其ImageTk.PhotoImage类,该类支持各种图像格式,包括png。

from PIL import Image, ImageTk
img = Image.open("python.png")
photo = ImageTk.PhotoImage(img)
label = Label(app, image = photo)

最终结果:

from Tkinter import Tk, PhotoImage, Label
def start_up():
    app = Tk()
    app.title("Tower")
    app.geometry('600x900')
    photo = PhotoImage(file="Python.gif")
    label = Label(app, image = photo)
    label.pack()
    app.mainloop()
start_up()