2012-10-22 157 views
1

我正在按照第31和32頁上的教程http://www.ittc.ku.edu/~niehaus/classes/448-s04/448-standard/tkinter-intro.pdfTkinter名稱錯誤:窗口凍結

我得到兩個窗口,一個帶有OK和Cancel按鈕和兩個輸入框,另一個是空白的。當我點擊確定或取消時,該窗口消失,但另一個空白窗口凍結,我甚至無法關閉。關閉它的唯一方法是關閉命令提示符。

我在運行時出現以下錯誤。

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 

回答

4

您需要導入string模塊改變。

雖然更好的方法來做到這一點(無需導入字符串)是使用int內置。即其更改爲:

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

我猜你通過一個非常老版本的Python創建工作的參考手冊...

+0

我改變了它爲int如所示,但現在我得到以下錯誤:「適用於第23行,ValueError:int()與基本10:''」的無效文字。在回溯中,我得到了「File C:\ ... \ tkSimpleDialog.py」,第71行,在ok self.apply()中。另外,空白窗口仍然掛起,唯一的方法是關閉它關閉命令提示符 – user1104854

+0

@ user1104854 - 在轉換爲int之前是否嘗試過打印'self.e1.get()'?值是什麼? – mgilson

+0

它的工作原理!謝謝,我認爲你是對的,我應該嘗試找到一個更新的指南。 – user1104854