python中self image_python Tkinter.TK与PIL.ImageTK的问题

展开全部

img = ImageTk.PhotoImage(im)

看上面一句,我们需要关注的是PhotoImage这个方法,所以看下他的源码self.__photo = tkinter.PhotoImage(**kw)

发现了上面这一句

是的它调32313133353236313431303231363533e58685e5aeb931333365666136用了tkinter下面的PhotoImage方法class PhotoImage(Image):

"""Widget which can display colored images in GIF, PPM/PGM format."""

def __init__(self, name=None, cnf={}, master=None, **kw):

"""Create an image with NAME.

Valid resource names: data, format, file, gamma, height, palette,

width."""

Image.__init__(self, 'photo', name, cnf, master, **kw)

上面是tkinter.PhotoImage

可以发现PhotoImage这个类,继承自Imageclass Image:

"""Base class for images."""

_last_id = 0

def __init__(self, imgtype, name=None, cnf={}, master=None, **kw):

self.name = None

if not master:

master = _default_root

if not master:

raise RuntimeError('Too early to create image')

self.tk = getattr(master, 'tk', master)

明显,tkinter他是有检查master 这个东西的。

也就是下面这一句有没有写root = tk.Tk()

所以,当你把顺序换了以后,他就报错了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
import tkinter as tk from tkinter import filedialog from PIL import Image, ImageTk import pytesseract class App: def __init__(self, master): self.master = master self.master.title("图像文字识别") self.master.geometry("600x400") self.path = "" self.text = "" self.label_title = tk.Label(self.master, text="请选择图片文件", font=("宋体", 20)) self.label_title.pack(pady=20) self.button_choose_file = tk.Button(self.master, text="选择图片", command=self.choose_file) self.button_choose_file.pack(pady=10) self.label_image = tk.Label(self.master) self.label_image.pack(pady=10) self.button_recognize = tk.Button(self.master, text="开始识别", command=self.recognize) self.button_recognize.pack(pady=10) self.textbox_result = tk.Text(self.master, font=("宋体", 14)) self.textbox_result.pack(pady=10) def choose_file(self): self.path = filedialog.askopenfilename(title="选择图片", filetypes=[("Image Files", "*.jpg *.png *.jpeg")]) self.label_title.configure(text="已选择图片:" + self.path) # 显示选择的图片 if self.path: img = Image.open(self.path) img = img.resize((300, 300)) img_tk = ImageTk.PhotoImage(img) self.label_image.configure(image=img_tk) self.label_image.image = img_tk def recognize(self): if self.path: # 调用pytesseract识别文字 self.text = pytesseract.image_to_string(Image.open(self.path), lang="eng+chi_sim") # 显示识别结果 self.textbox_result.delete('1.0', tk.END) self.textbox_result.insert(tk.END, self.text) else: self.label_title.configure(text="请选择图片文件!") root = tk.Tk() app = App(root) root.mainloop()上述代码的开发环境和主要技术是什么,1000字
最新发布
06-03

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值