2017-01-24 19 views
0

私はGUIとしてtkinterを使用するアプリケーションを構築しています。私はコードを最適化するので、現在は正常に動作します。私はfrom module import *の使用を避けなければならないことをオンラインで読んだ。現在、私の作業コードはfrom tkinter import *を使用しています。Python 3.5 - tkinterラベルスティッキーエラー: "import *"の使用を防ぐためにロードするサブモジュールは?

私のコードは次のラベルを持っている:私はfrom tkinter import Labelfrom tkinter import *を変更したときに

Label(image=IMG).grid(row=0, padx=5, pady=5, sticky=W) 

しかし、私はエラーを取得しています:

NameError: name 'W' is not defined

だから私の質問は、どのように私はどのサブモジュールを見つけることができる、です(それが正しい名前であれば)tkinterはスティッキー値の定義を担当していますか?

NB:私はimport tkinterを使用してsticky=tkinter.Wを適用することを発見した実際に動作しないが、私は、これはfrom tkinter import *を使用するのと同じリスクを持って推測していますか?だから私はまだ正確に指定されたインポートを見つけることを望むでしょう。

+1

なし、 '輸入tkinter'はTkinterのインポートから'と同じリスクを持っていないが* '。 'import tkinter'はあなたがそれをする方法です。後でコードの読みやすさを助ける' tkinterとしてのtkinterのインポート 'が好きです。 –

+0

Thnxブライアンは余分な洞察力を持っています。 – Montmons

答えて

1

sticky=Wで使用するWのようなTkinter定数をインポートしていないため、このエラーが発生します。 from tkinter.constants import Wfrom tkinter import Wでもかまいません)のいずれかを行うか、その値を置き換えてsticky='w'を実行します。

実際、全てのTkinter定数は単なる文字列であるので、彼らはすべての文字列('disabled'によってDISABLED ...)に置き換えることができ

+0

Thnx that worked!私は確かにすでにtkinter輸入定数から試してみましたが、それはやっていませんでした。代わりにtkinter.constantsからWをインポートしなければならないかどうかはわかりませんでした。しかし、あなたの完全な答えを読んで、私は最後に 'sticky = 'w'のために行くことにしました。素晴らしい作品、thnx。 – Montmons

関連する問題