当前位置: 首页 > 面试题库 >

Python-如果在函数中创建Tkinter图像,为什么不显示?

谭兴学
2023-03-14
问题内容

此代码有效:

import tkinter

root = tkinter.Tk()
canvas = tkinter.Canvas(root)
canvas.grid(row = 0, column = 0)
photo = tkinter.PhotoImage(file = './test.gif')
canvas.create_image(0, 0, image=photo)
root.mainloop()

它显示了图像。

现在,此代码可以编译,但不会显示图像,我也不知道为什么,因为它是同一类的代码:

import tkinter

class Test:
    def __init__(self, master):
        canvas = tkinter.Canvas(master)
        canvas.grid(row = 0, column = 0)
        photo = tkinter.PhotoImage(file = './test.gif')
        canvas.create_image(0, 0, image=photo)

root = tkinter.Tk()
test = Test(root)
root.mainloop()

问题答案:

该变量photo是一个局部变量,在实例化类后会获取垃圾。保存对照片的引用,例如:

self.photo = tkinter.PhotoImage(...)


 类似资料:
  • 问题内容: 试图在我的GUI窗口上显示来自互联网的图片。 到目前为止,我的代码是: 问题是我得到的只是一个应该显示图片的蓝色框。我该如何解决? 在Windows上使用python 3.3 问题答案: 现在这是一个疯狂的猜测,但是我只记得一个类似的问题。我能够以这种方式重现您的“蓝框”,所以这也可能是您的问题。我将尝试一下。 我假设PhotoImage是在其他某个范围内创建的(可能是一种方法或类似的

  • 问题内容: 因此,我必须使用Tkinter来创建棋盘游戏。这只是程序的一部分,我想在其中引入董事会形象。但是我不断收到错误消息:“创建图像为时过早”,我不确定自己做错了什么。 到目前为止,这是我的代码: 任何帮助,将不胜感激。谢谢 :) 问题答案: 您忘记声明root- 。使用前,Tk系统必须打开。

  • 问题内容: 我正在尝试使用一个字段来获取手动输入,然后使用该数据。 我发现的所有资料都声称我应该使用该函数,但是我还没有找到一个简单的可运行的迷你示例,因此无法使用它。 我希望有人可以给我打电话,告诉我我做错了什么。这是一个迷你文件: 这给了我一个我可以输入的字段,但是一旦输入数据我就什么也不能做。 我怀疑我的代码不起作用,因为最初它是空的。但是,一旦输入了输入数据,我该如何访问呢? 问题答案:

  • 我试图使一个客户端-服务器包成一个应用程序。因此,当应用程序打开时,服务器会自动进入待机/监听模式。问题是当运行服务器套接字时,它直到之后才显示gui。我希望gui和服务器套接字同时发生。 我已经注释掉了代码行,它按照预期工作,直到 我读过关于线程来解决这个问题的文章,但是我看到的例子都没有给出足够清晰的答案。我对python和编程还是相当陌生的。谢啦

  • 最近我一直在尝试java图形,并决定制作一个可以打印拼贴图像的程序。这个程序的构造函数接受一个图像数组和每个图像将显示的宽度。 当我运行程序时,我最初使用以下方法来设置JFrame窗口的大小: 不幸的是,JFrame确实显示了部分图像。JFrame窗口不够低,无法显示所有窗口。为了再次确认我的数学没有出错,我用下面这行代码进行了测试: 同样的问题也发生了。直到我使用了下面的一行,整个图像才显示出来

  • 我正在尝试用tkiter制作一个简单的python GUI。最近,我有一个很大的麻烦tkinter Toplevel设置它的窗口图标。当我首先设置顶级窗口图标时,它在IDE或CMD上运行良好,然后就没有问题了;当我将其转换为EXE时,除了它之外,没有显示图标,也没有显示其他小部件。首先尝试cx_冻结,看到问题后,我尝试pyinstaller,也有同样的问题。我也曾试图用互联网解决这个问题,但一无所