1

コードでいくつかの問題が発生しています。値が 0 ~ 255 の範囲にない場合、コードでメッセージ ボックスをポップアップさせたいのですが、機能しません。現在、c>255 を使用してトラブルシューティングを行っていますが、何が問題なのかわかりません。c>255 の場合でも、値が 255 未満の場合でもメッセージ ボックスが表示されます。

  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)


    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)
    Button(self.top, text="Ok", command=self.get).grid(row=3, column = 1)



def get(self):
    self.c = self.a.get()
    self.d = self.b.get()
    if self.c > 255:
        tkMessageBox.showerror("Error", "Please enter a value between 0-255")
        self.clicked_wbbalance()
    else:
        print "asdfasd"
4

1 に答える 1

8

self.cは数値ではなく文字列であり、文字列は常にどの数値よりも大きくなります (この比較の説明については、こちらを参照してください)。

self.c比較前に int に変換してみてください:

try:
    c_as_int = int(self.c)
except ValueError:
    tkMessageBox.showerror("Error", "Please enter a value between 0-255")
    self.clicked_wbbalance()
else:
    if c_as_int > 255:
        tkMessageBox.showerror("Error", "Please enter a value between 0-255")

        self.clicked_wbbalance()

Python3 では、この種の異なる型比較はTypeError.

于 2012-11-12T08:49:45.307 に答える