如果我想在Tkinter中只接受大於或等於0.0且小於或等於1.0的浮點數的輸入框,我該怎麼做?如何只允許在Tkinter的輸入字段中的某些參數
0
A
回答
0
如果你想調用一個按鈕來檢查是否這是一種方法。
from tkinter import *
class GUI():
def __init__(self, root):
self.Entry_i = Entry(root, bd = 5)
self.test = StringVar()
Label_i = Label(root, textvariable = self.test)
Button_i = Button(root, text = "Go", command = self.floatornot)
self.Entry_i.grid()
Label_i.grid()
Button_i.grid()
mainloop()
def floatornot(self):
test = self.Entry_i.get()
if float(test) < 0 or float(test) > 1:
self.test.set("Good")
else:
self.test.set("")
root = Tk()
GUI(root)
該按鈕將調用floatornot函數。這將獲得條目的價值並檢查它是否可以。根據結果,標籤的值將會改變。
0
它使用的正確方法tkinter's validate capabilities。但它真的是一個PIA使用。
dsgdfg有一個很好的答案,但我可以做了很多整潔,強健,更有活力:
import Tkinter as tk
class LimitedFloatEntry(tk.Entry):
'''A new type of Entry widget that allows you to set limits on the entry'''
def __init__(self, master=None, **kwargs):
self.var = tk.StringVar(master, 0)
self.var.trace('w', self.validate)
self.get = self.var.get
self.from_ = kwargs.pop('from_', 0)
self.to = kwargs.pop('to', 1)
self.old_value = 0
tk.Entry.__init__(self, master, textvariable=self.var, **kwargs)
def validate(self, *args):
try:
value = self.get()
# special case allows for an empty entry box
if value not in ('', '-') and not self.from_ <= float(value) <= self.to:
raise ValueError
self.old_value = value
except ValueError:
self.set(self.old_value)
def set(self, value):
self.delete(0, tk.END)
self.insert(0, str(value))
您可以使用它就像一個文本輸入構件,除了現在你有「from_」和'以」參數設定允許範圍:
root = tk.Tk()
e1 = LimitedFloatEntry(root, from_=-2, to=5)
e1.pack()
root.mainloop()
相關問題
- 1. 只允許某些字符
- 2. 允許用戶在C#中只輸入某些數字,只有整數?
- 3. 只允許PHP中的某些字符
- 4. 只允許數字輸入
- 5. 如何只允許某些文檔字段在Meteor中插入和更新?
- 6. 如何在Outlook VBA輸入框中只允許輸入數字
- 7. 如何清除SAPUI5輸入字段只允許幫助輸入值允許?
- 8. 不允許在jQuery的表單輸入字段中輸入一些數字
- 9. 隱藏用戶輸入,只允許某些字符
- 10. 只需要允許輸入或刪除某些字符
- 11. 只允許某些可能的值在Rails強參數
- 12. Xcode:如何只允許UITextView中的某些字符?
- 13. 只允許某些事件
- 14. 如何只允許輸入字母?
- 15. 允許小數點/句點輸入字段允許的字符
- 16. 只允許HTML格式的某些用戶輸入
- 17. 只允許某些HTML標籤的用戶輸入
- 18. 只允許輸入字母
- 19. 檢查contraint只允許某些字符
- 20. 如何只允許文本輸入的數字,但允許JavaScript的命令?
- 21. C++只允許某些參數放置在argv [1]
- 22. AngularJS:只允許數字作爲輸入
- 23. 只允許輸入一次數字
- 24. 允許文本字段只輸入數字[Java]
- 25. 只想允許字符串中的某些字符
- 26. 只允許字符串中的某些字符
- 27. 只允許字符串中的某些字符
- 28. 只允許文本輸入字段中的特定域
- 29. 只允許某些類型的屬性
- 30. 只允許HTML字段以某些詞開頭
你的意思是,它應該檢查你所提供的輸入是否是收集之後可以接受的,或者你想讓他檢查打字時? –
在輸入框(key up和keydown)中添加一個回調函數,每一個按鍵都將'save value to a variable',每個按鍵向上'如果無效還原舊值,則檢查值。平均上升/下降邊緣操作。 – dsgdfg