0

TkinterEntryウィジェットに問題があります。私は物事をテストしているだけで、エントリself.aに入力したものをコールバックに出力させたいと思っています。しかし、私はこのエラーを受け取っています。

ファイル"C:\ Python27 \ lib \ lib-tk \ Tkinter.py"、行1410、呼び出し return self.func(* args)ファイル "C:/Users/Andy/testimage.py"、行146、get print a.get(self)NameError:グローバル名'a'が定義されていません

誰かが私が間違っていることを教えてくれるかどうか疑問に思いました。代わりに「aasdfasd」を出力させると、ボタンを押すとそれが出力されるため、コールバック関数を正しくリンクしました。

def clicked_wbbalance(self):
    self.top = Toplevel()
    self.top.title("LASKJDF...")
    Label(self.top, text="Enter low level").grid(row=0, column=0,padx=10)
    Label(self.top, text="Enter high level").grid(row=1, column=0,padx=10)
    Label(self.top, text="Values must be between 0 to 255").grid(row=3, column=0)
    Button(self.top, text="Ok", command=self.get).grid(row=3, column = 1)

    self.a =Entry(self.top).grid(row=0, column=1,padx=10)
    self.b =Entry(self.top).grid(row=1, column=1,padx=10)

def get(self):
    print self.a.get(self)
4

2 に答える 2

3

RocketDonkey が指摘したように、トレースバックは投稿したコードと一致しません。

書かれたコードは、次のようなトレースバックを生成します。

AttributeError: 'NoneType' object has no attribute 'get'

根本的な問題は、gridが返されることNoneです。つまり、属性aおよびbは への呼び出しの結果が割り当てられるNoneため、 になりますgrid。オブジェクトの作成とウィジェットの配置を別の行に配置して修正します。

self.a = Entry(self.top)
self.b = Entry(self.top)

self.a.grid(row=0, column=1,padx=10)
self.b.grid(row=1, column=1,padx=10)
于 2012-11-11T22:31:51.653 に答える
1

トレースバックは と言ってprint a.get(self) NameError: global name 'a' is not definedいますが、投稿したコードは構文を使用していますprint self.a.get(self)(正しいように見えます)。したがって、146 行目を確認するaself、先頭aa. self146 行目の前に追加してみてa、問題が続くかどうかを確認してください。

于 2012-11-11T22:22:13.623 に答える