尝试将图像添加到tkinter应用中,但不会加载该图像

时间:2019-12-05 18:19:29

标签: python tkinter

我试图在不使用PIL的情况下将图像添加到应用程序中,因为我无法在学校电脑上访问它。因此,我尝试使用PhotoImage,但是当我运行该程序时,它只是给我一个白屏,上面没有任何内容。在过去的4个小时中,我一直在尝试这样做,建议会很有帮助。

from tkinter import *
from tkinter import PhotoImage

master = Tk()

var1 = IntVar()
var2 = IntVar()
var3 = IntVar()
var3 = IntVar()
var4 = IntVar()
var5 = IntVar()
var6 = IntVar()
var7 = IntVar()
var8 = IntVar()
var9 = IntVar()
var10 = IntVar()
var11 = IntVar()
var12 = IntVar()
var13 = IntVar()
var14 = IntVar()
var15 = IntVar()
var16 = IntVar()
var17 = IntVar()
var18 = IntVar()


def var_state1():
    if var1.get() == TRUE and var2.get() == TRUE and var3.get() == TRUE:
        print("it workd1")

def Before_Day():

    # this is the image
    image = PhotoImage(file='C:/Users/plarkin2020334/Pictures/DQ_Logo.png')
    Label(master, image=image).grid(row=0, sticky=W)

    Label(master, text="Check When Complete:").grid(row=1, sticky=W)
    Checkbutton(master, text="Turn On Icecream Mashine", variable=var1).grid(row=2, sticky=W)
    Checkbutton(master, text="Turn On Radio", variable=var2).grid(row=3, sticky=W)
    Checkbutton(master, text="Turn On Oven", variable=var3).grid(row=4, sticky=W)
    crl1 = Button(master, text="Done", command=var_state1).grid(row=5, sticky=W, pady=4)


Before_Day()
mainloop()

1 个答案:

答案 0 :(得分:0)

您的代码还可以,除了几件事。程序到达mainloop()时,正在创建的“图像”会丢失,这是因为您是在Before_Day()函数内部创建的。

您可以做的一个简单更改就是将这行移到顶部(即Before_Day()函数之外),然后将其直接用作全局变量。

image = PhotoImage(file='C:/Users/plarkin2020334/Pictures/DQ_Logo.png')

只需在“ var18 = IntVar()”行之后编写此代码。并且还请记住,在使用grid()时不要将带有标签的pack()一起使用。

更准确地说,您可以在下面看到确切的代码:

from tkinter import *
from tkinter import PhotoImage

master = Tk()

var1 = IntVar()
var2 = IntVar()
var3 = IntVar()
var3 = IntVar()
var4 = IntVar()
var5 = IntVar()
var6 = IntVar()
var7 = IntVar()
var8 = IntVar()
var9 = IntVar()
var10 = IntVar()
var11 = IntVar()
var12 = IntVar()
var13 = IntVar()
var14 = IntVar()
var15 = IntVar()
var16 = IntVar()
var17 = IntVar()
var18 = IntVar()
image = PhotoImage(file='C:/Users/plarkin2020334/Pictures/DQ_Logo.png')

def var_state1():
    if var1.get() == TRUE and var2.get() == TRUE and var3.get() == TRUE:
        print("it workd1")

def Before_Day():
    # this is the image
    Label(master, image=image).grid(row=0, sticky=W)

    Label(master, text="Check When Complete:").grid(row=1, sticky=W)
    Checkbutton(master, text="Turn On Icecream Mashine", variable=var1).grid(row=2, sticky=W)
    Checkbutton(master, text="Turn On Radio", variable=var2).grid(row=3, sticky=W)
    Checkbutton(master, text="Turn On Oven", variable=var3).grid(row=4, sticky=W)
    crl1 = Button(master, text="Done", command=var_state1).grid(row=5, sticky=W, pady=4)


Before_Day()
mainloop()

这应该很好!希望对您有所帮助。 祝你好运! :-)