如何修复TypeError:__ init __()需要至少2个参数(给定1个)错误

时间:2016-08-25 05:19:51

标签: python tkinter wand

我正在尝试将上传的pdf文件拆分为图像,但我收到的错误就像至少有2个参数(1given)。

我知道这个错误已经被问到了,但我很困惑地修复了我的程序。

from pyPdf import PdfFileWriter, PdfFileReader
from wand.image import Image
import os

from Tkinter import *
from tkFileDialog import askopenfilename
root =Tk()
root.geometry("500x500")

class MyFrame(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.master.title("pdf")
        self.master.rowconfigure(5, weight=1)
        self.master.columnconfigure(5, weight=1)
        self.grid(sticky=W+E+N+S)
        label = Label(self,text="Upload a pdf file",font = ('Arial' , 25))
        label.pack()
        self.Label1=Label(self)
        self.Label1.pack()
        self.button = Button(self, text="Upload", command=self.load_file, fg="red", width=10).pack(side=TOP, expand=YES)
        self.pack(fill=BOTH, expand=YES)

    def load_file(self):
        fname = askopenfilename()
        self.Label1.config(text=os.path.basename(fname), fg="blue")
        self.im = Image(filename=fname, resolution=200)
        for i, page in enumerate(im.sequence):
            with Image(page) as page_image:
                page_image.alpha_channel = False
                page_image.save(filename='page-%s.png' % i)

        print "suceSsfully"
if __name__ == "__main__":
    MyFrame().mainloop()

每当我运行此代码时,我都会收到此错误。

File "root.py", line 27, in load_file
    self.im = Image(filename=fname, resolution=200)
TypeError: __init__() takes at least 2 arguments (1 given)

1 个答案:

答案 0 :(得分:2)

Tkinter拥有自己的Image班级Tkinter.Image。 在导入wand.image.Image后从Tkinter导入所有内容时,您开始使用Image中的Tkinter类。 您应该将Tkinter导入import Tkinter as tk并将其与tk.class_name一起使用,或明确使用wand.image.Image代替Image