Tkinter名称错误:窗口冻结

时间:2012-10-22 15:02:38

标签: python widget tkinter tk

我正在按照第31页和第32页http://www.ittc.ku.edu/~niehaus/classes/448-s04/448-standard/tkinter-intro.pdf中的教程进行操作。

我有两个窗口,一个是OK和取消按钮和两个入口盒,另一个是空白。当我单击确定或取消时,该窗口消失,但另一个空白窗口冻结,我甚至无法关闭。关闭它的唯一方法是关闭命令提示符。

运行时出现以下错误。

first = string.atoi(self.e1.get())
NameError: global name 'string' is not defined

我按照评论中的说明调整了dialog2.py。 tkSimpleDialog.py根本没有改变(上面链接的第31页)

# File: dialog2.py

import tkSimpleDialog #added this
import os #added this
from Tkinter import * #added this

class MyDialog(tkSimpleDialog.Dialog):

    def body(self, master):

        Label(master, text="First:").grid(row=0)
        Label(master, text="Second:").grid(row=1)

        self.e1 = Entry(master)
        self.e2 = Entry(master)

        self.e1.grid(row=0, column=1)
        self.e2.grid(row=1, column=1)

        return self.e1 # initial focus

    def apply(self):
        first = string.atoi(self.e1.get())
        second = string.atoi(self.e2.get())
        print first, second # or something

root = Tk() #added this
d = MyDialog(root) #added this

1 个答案:

答案 0 :(得分:4)

您需要导入string模块。

虽然更好的方法(不需要导入字符串)是使用int内置函数。即改为:

first = int(self.e1.get())

我猜测你正在使用的参考手册是为一个非常旧版本的python创建的......