1

31ページと32ページにあるチュートリアルhttp://www.ittc.ku.edu/~niehaus/classes/448-s04/448-standard/tkinter-intro.pdfに従っています。

2つのウィンドウが表示されます。1つは[OK]ボタンと[キャンセル]ボタン、2つのエントリボックスがあり、もう1つは空白です。[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
4

1 に答える 1

4

stringモジュールをインポートする必要があります。

(文字列をインポートする必要なしに)これを行うためのより良い方法は、int組み込みを使用することです。つまり、次のように変更します。

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

あなたが作業しているリファレンスマニュアルは、非常に古いバージョンのpython用に作成されたと思います...

于 2012-10-22T15:04:26.437 に答える