Tkinter,'module'对象没有属性'Frame'

时间:2014-01-08 13:58:25

标签: python tkinter tk

我在tkinter python中写了一个hello world app,但是我接下来的消息:'module'对象没有属性'Frame'

import _tkinter as tk

这是错误

class Application(tk.Frame):
    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.pack()
        self.createWidgets()
    def createWidgets(self):
        self.hi_there = tk.Button(self)
        self.hi_there["text"] = "Hello World\n(click me)"
        self.hi_there["command"] = self.say_hi
        self.hi_there.pack(side="top")

        self.QUIT = tk.Button(self, text="QUIT", fg="red",
                                        command=root.destroy)
        self.QUIT.pack(side="bottom")

    def say_hi(self):
        print("hi there, everyone!")

root = tk.Tk()
app = Application(master=root)
app.mainloop()

为什么会这样?

3 个答案:

答案 0 :(得分:4)

请勿将您的文件称为tkinter.py,如果有必要,请重命名。

答案 1 :(得分:3)

如果使用Python 3.x,则应使用Tkintertkinter),而不是_tkinter

import Tkinter as tk

根据Tkinter module documentation

  

... Tk接口位于名为_tkinter的二进制模块中。这个   module包含Tk的低级接口,永远不应该   由应用程序员直接使用。

答案 2 :(得分:1)

这里的解决方案是使用相关Python版本的正确语法。

Tkinter>> Python 2.x

tkinter>> Python 3.x

尽管如此,我有错误,因为我已经调用了我的文件 tkinter.py ,并且出现了错误:

module 'tkinter' has no attribute 'Frame'

一旦我将我的文件重命名为其他东西,在我的情况下我选择了 tk-testing.py 它在Python 2.x和Python 3.x中都很好,同时使用了正确的命名约定。

Python 2.x

import Tkinter as tk

Python 3.x

import Tkinter as tk