2012-01-21 17 views
0

私はpythonでtkinterインターフェイスのチュートリアルを辿り、次のコードを使用してプログラムのルートウィジェットを宣言し、子ウィジェットを作成します:Python Tkinter - グローバル名Tk()が定義されていません

root = Tk() 

コードのこの作品を解釈しようとすると、私は次のエラーを取得しています:

Global name Tk() is not defined 

私はTkinterのチュートリアル以降に変更されたためであるかなり確信しています。このようなコードスニペットを使用しない他のチュートリアルも見つからないので、どちらもうまくいきません。

私が持っている質問は文脈が単純ですが、検索すると答えが見つかりません。 これを回避するには:tkinterの構文に変更されたものと、ルートウィジェットを宣言するソートの新しいメソッドは何ですか?あなたが子供のウィジェットをルートに追加する方法も変わったかどうかを誰かが知っていれば、それは華麗になります。任意およびすべてのあなたはおそらく、一番上にfrom Tkinter import *を忘れてしまった〜マイケル・

答えて

6

を返信するため

ありがとうございました。

+0

ほとんどのチュートリアルでは、この行を使用する(または使用することを前提としています)と伝えています。 'import Tkinter'を使ったばかりの場合は、代わりに' root = Tkinter.Tk() 'を使う必要があります。 – chepner

+0

@chepner、それも好きです。しかし、明らかに彼が読んでいるチュートリアルでは、それは異なっています。 –

+0

これは悪い習慣です。私は 'tkinterをtkとしてインポートする 'ことを覚えておいて、' tk.Tk() 'などを使用します。' import * 'は一度もお勧めできませんでした。 –

2

はまた、

import Tkinter 

または

import Tkinter as tk 

編集があります:一般的に、あなたの具体的な例のためにfrom Tkinter import Tkが動作しますので、イディオムfrom <library> import <module>を使用します。

このコードでは、コード全体でではなく、tk.Buttonと入力するだけで済みます。また、Python 3.xを使用している場合、ライブラリは小文字になります。一般的なインポートの質問については

import tkinter 

、私はImporting Python ModulesリンクはSO上で多くのことを参照し見てきました。

-1
from Tkinter import * 
root = Tk() 
+3

ユーザーに 'from X import *'を勧めないでください!! 1 – kay

+0

なぜ、@ケー?私はPython n00bとして尋ねます。 – scorpiodawg

+0

私はそれが悪い習慣とは何かを持っていると思っています。あなたが "from X import *"ならば、そのモジュールからすべてをインポートします。同じスクリプトのいくつかのモジュールでこれを行うと、 –