私は自分自身を理解できない状況に座っています。
エントリウィジェットを使用してユーザーの操作を取得するとき、データを検証する正しい方法を見つけるのに苦労しています。
状況:
2つのエントリウィジェットがあり、ユーザーは2つの変数を入力する必要があります。これらの変数はfloatである必要があります。
入力した値がfloatの場合にのみ正しく機能するプログラムを実行できますが、空白のままにするか、文字を入力するとシャットダウンします。そのため、エントリがfloatであることを検証します。
variableentry = Entry(root and so on)
variableentry.grid()
私は使用しています:
variablename = float(variableentry.get())
そして私が:
print(type(variablename)
メッセージが表示されます:
<class 'float'>
したがって、私は使用することができません
#...
try:
if(variablename is not float):
messagebox.showerror("Error", "Incorrect parameter")
return
変数名はクラス'float'であり、floatではないため、これは明らかに機能していません。ifステートメントでfloatの代わりにさまざまな入力方法を試しましたが、運がありませんでした。
何か案は?
よろしくお願いします!
よろしくお願いします、
キャスパー
編集:
私は見つけました:
from Tkinter import *
class ValidatingEntry(Entry):
# base class for validating entry widgets
def __init__(self, master, value="", **kw):
apply(Entry.__init__, (self, master), kw)
self.__value = value
self.__variable = StringVar()
self.__variable.set(value)
self.__variable.trace("w", self.__callback)
self.config(textvariable=self.__variable)
def __callback(self, *dummy):
value = self.__variable.get()
newvalue = self.validate(value)
if newvalue is None:
self.__variable.set(self.__value)
elif newvalue != value:
self.__value = newvalue
self.__variable.set(self.newvalue)
else:
self.__value = value
def validate(self, value):
# override: return value, new value, or None if invalid
return value
http://effbot.org/zone/tkinter-entry-validate.htmから
ただし、残りのコードはクラスで記述されていません(これは最適ではないことはわかっていますが、教師から要求されています)。これは上記の例に影響しますか?そして、どうすればそれを自分のニーズに合わせることができますか?