Python TypeError:初始值必须是str或None,而不是bytes
这是我的代码。我开始学习python类,并试图编写一个简单的GUI应用程序从输入的URL下载图像,但这部分有一个问题: self.i=Image.open(StringIO(self.r.content))。Python TypeError:初始值必须是str或None,而不是bytes,python,python-3.x,typeerror,Python,Python 3.x,Typeerror,这是我的代码。我开始学习python类,并试图编写一个简单的GUI应用程序从输入的URL下载图像,但这部分有一个问题: self.i=Image.open(StringIO(self.r.content))。 请告诉我我做错了什么。self.r.content是二进制数据(一个bytes对象),但StringIO是文本数据。您想在此处使用io.BytesIO: # -*- coding : utf-8 -*- import tkinter as tk import requests from P
请告诉我我做错了什么。
self.r.content
是二进制数据(一个bytes
对象),但StringIO
是文本数据。您想在此处使用io.BytesIO
:
# -*- coding : utf-8 -*-
import tkinter as tk
import requests
from PIL import Image
from io import StringIO
class Window:
def __init__(self, master):
self.master = master
self.url = tk.Entry()
self.url.get()
self.url.grid(row=0, column=1)
self.button = tk.Button(text="Download", command=self.get_url)
self.button.grid(row=0, column=0)
self.label = tk.Label(text="Name")
self.label.grid(row=1, column=0)
self.path = tk.Entry()
self.path.grid(row=1, column=1)
def get_url(self):
self.r = requests.get(self.url.get())
self.i = Image.open(StringIO(self.r.content))
self.i.save(self.path.get())
def main():
root = tk.Tk()
w = Window(root)
root.mainloop()
if __name__ == "__main__":
main()
from io import BytesIO
self.i = Image.open(BytesIO(self.r.content))