Tkinter和PIL错误

时间:2017-08-17 13:21:54

标签: python python-2.7 tkinter

我正试图让.gif动画在带有按钮的图片旁边工作。但我似乎遇到了问题,我正在导入这些模块 “import Tkinter”和“来自PIL导入图像,ImageTk,ImageSequence” 但是,只要我做“导入Tkinter”---“来自Tkinter import *” 它说Tkinter没有定义,我搜索过......并且搜索过....我不能为我的死亡找到解决方案。 我必须使用“来自Tkinter import *”,因为我不知道在哪里可以找到“*”的子项目的特定内容我还需要使用“Label”,“bg”和“relief” 这是我的代码:

RecyclerView

我还有另一篇文章要与这段代码合并:

    import Tkinter
from PIL import Image, ImageTk, ImageSequence

class App:
    def __init__(self, parent):
        self.parent = parent
        self.canvas = Tkinter.Canvas(parent, width = 400, height = 500)
        self.canvas.pack()
        self.sequence = [ImageTk.PhotoImage(img)
                         for img in ImageSequence.Iterator(
                            Image.open(
                            r'C:\Users\Damian\Pictures\Gif folder\Originals\Bunnychan.gif'))]
        self.image = self.canvas.create_image(200,200, image=self.sequence[0])
        self.animating = True
        self.animate(0)
    def animate(self, counter):
        self.canvas.itemconfig(self.image, image=self.sequence[counter])
        if not self.animating:
            return
        self.parent.after(33, lambda: self.animate((counter+2) % len(self.sequence)))

root = Tkinter.Tk()
root.title('App')
app = App(root)
root.mainloop()

1 个答案:

答案 0 :(得分:0)

导入tkinter的推荐方法是:

import Tkinter as tk

一旦你这样做,就像平常一样使用tkinter,但你需要在所有小部件和常量之前添加tk.。当然,你可以做import Tkinter,但这意味着你必须用Tkinter.加上前缀,这有点过于罗嗦IMO。

例如:

import Tkinter as tk

root = tk.Tk()
label = tk.Label(root, relief=tk.RAISED)
...

我个人不建议使用常量。您可以只使用一个字符串(例如:relief="raised"sticky="nsew"等),这样可以得到完全相同的结果。