我坐在一個我無法弄清自己的情況。tkinter輸入小工具和變量
當即時通訊使用Entry小部件獲取用戶交互時,我很難找到正確的方式來驗證數據。
的情況:
我有兩個入口小部件,用戶必須輸入其必須是浮動的兩個變量。
雖然我可以運行一個程序,只有正常工作,如果輸入的值是浮動的,如果我再留空白或輸入一個字母關閉 - 爲此我要驗證的進入是一個浮動:
variableentry = Entry(root and so on)
variableentry.grid()
我使用的是:
variablename = float(variableentry.get())
當我:
print(type(variablename)
我得到個Ë消息:
<class 'float'>
因此我不能因爲VARIABLENAME是一流的「浮動」的使用
#...
try:
if(variablename is not float):
messagebox.showerror("Error", "Incorrect parameter")
return
這顯然心不是工作,而不是浮動,我試圖進入,而不是不同的方式漂浮在if語句中 - 沒有任何運氣。
任何想法?
在前進,謝謝!
最好的問候,
卡斯帕
編輯:
我已經找到了:
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
然而,代碼的其餘部分不是寫在類(我知道這不是最佳的,但它是老師要求)是否會影響上述例子?而我將如何讓它適合我的需求?
這工作完美無缺 - Upvoted和接受 - 非常感謝! :-) – Evilunclebill