2012-10-22 3 views
1

313 및 32 페이지의 자습서를 따르고 있습니다. http://www.ittc.ku.edu/~niehaus/classes/448-s04/448-standard/tkinter-intro.pdf.Tkinter 이름 오류 : 창이 동결 됨

나는 두 개의 창을 보았습니다. 하나는 확인 및 취소 버튼과 두 개의 입력 상자가 있고 다른 하나는 비어 있습니다. 확인 또는 취소를 클릭하면 해당 창이 사라지지만 다른 빈 창이 멈추고 닫을 수 없습니다. 이를 닫기위한 유일한 방법은 명령 프롬프트를 닫는 것입니다.

실행할 때 다음 오류가 발생합니다.

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

내 의견에 표시된대로 dialog2.py를 조정했습니다. tkSimpleDialog.py 모든 (페이지 위의 링크의 31) 당신은 string 모듈을 가져올 필요

# 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

에서 변경되지 않습니다.

문자열을 가져올 필요없이이 작업을 수행하는 더 좋은 방법은 int 내장 명령을 사용하는 것입니다.

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

내가 int로 그것을 당신이 파이썬의 아주 오래된 버전 생성을 통해 작업중인 참조 설명서 같은데요

...

+0

변경 등 : 즉로 변경 제안,하지만 지금은 다음과 같은 오류가 발생했습니다 "라인 23, 적용, ValueError : int 10 진법에 대한 리터럴이 잘못되었습니다 : ''". traceback에서 "file C : \ ... \ tkSimpleDialog.py", 줄 71, ok self.apply() "가 표시됩니다. 또한 빈 창이 여전히 끊어지고 닫을 수있는 유일한 방법은 다음과 같습니다. close 명령 프롬프트 – user1104854

+0

@ user1104854 -'int'로 변환하기 전에'self.e1.get()'을 인쇄 해 보셨습니까? 값은 무엇입니까? – mgilson

+0

작동합니다! 고맙습니다. 새로운 가이드를 찾으십시오. – user1104854