Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在文本小部件中插入图像而不使用imageTK_Python_Tkinter - Fatal编程技术网

Python 在文本小部件中插入图像而不使用imageTK

Python 在文本小部件中插入图像而不使用imageTK,python,tkinter,Python,Tkinter,不幸的是,我在osx机器下开发,无法安装imageTK 我需要插入从图像字典中获取的图像,保存方式如下: i = open(filename, 'rb') i.seek(0) w = i.read() i.close() allicons[d]=w 所以在插入时,我没有文件名,只有dict 对于imageTk,这一点非常有效: c = cStringIO.StringIO() c.write(allicons[key]) c.seek(0) im = Image.open(c) iconima

不幸的是,我在osx机器下开发,无法安装imageTK

我需要插入从图像字典中获取的图像,保存方式如下:

i = open(filename, 'rb')
i.seek(0)
w = i.read()
i.close()
allicons[d]=w
所以在插入时,我没有文件名,只有dict

对于imageTk,这一点非常有效:

c = cStringIO.StringIO()
c.write(allicons[key])
c.seek(0)
im = Image.open(c)
iconimage=ImageTk.PhotoImage(im)
config.text.image_create(INSERT, image=iconimage)
但是没有imageTk我不知道怎么做。 仅使用导入图像,我尝试:

im = Image.open(c)
iconimage = PhotoImage(im)
图像被识别为TkInter.PhotoImage对象。。。, 但是插入它会得到一个类型错误:str返回了非字符串类型的实例。。。在图像中_创建*self._选项cnf,kw

。。。非常感谢您的帮助,谢谢


亚历山德罗

PhotoImage有一个“数据”选项。您可以为它提供使用base64编码的gif数据。比如:

dat = base64.encodestring(allicons[key])
pic = PhotoImage(data=dat)
...

没有PIL,我不喜欢你的机会。除非你的图像都是gif格式。搜索此网站或寻找让PIL在osx上工作的方法。是!正是因为这个原因,我小心地将任何进入allicons[]的图像转换为GIF。所以Tkinter的内置PhotoImage类可以直接从文件中读取gif,例如pic=PhotoImagefile='which.gif'。然后你需要做的就是插入它:text.image\u createEND,image=pic.谢谢,但在我的例子中,我不能使用它,因为图像不是在文件中,而是在字典中,正如代码所示。在没有文件的情况下,如何使用PhotoImage类?是否有任何原因使图像不能以gif格式存在于文件中?无论如何,PhotoImage还有一个“数据”选项。您可以为它提供使用base64编码的gif数据。类似于:dat=base64.encodestringallicons[key],然后pic=PhotoImagedata=dat