Merhaba, tkinter da oluşturduğumuz entry()
alanında show=""
ile yazılan içeriğin görünümünü değiştirebiliyoruz. Bunun gibi başka bir özellik ile kullanıcıdan entry()
alanında sadece “float” değerler girebilmesini nasıl sağlayabilirim?
3 Beğeni
sanırım bu veri sınırlamasının bir yolu yok ama işinizi görecekse label ile sadece float değer girmesini yazdırabilirsiniz
örn:
değer = Entry(font="Verdana 14",fg="RED")
değer.place(x=20,y=20)
label = Label(text="Lütfen bir ondalık sayı giriniz !")
label.place(x=20,y=50)
if type(değer.get()) == str :
label["text"] = "Bu bir string değer !"
elif type(değer.get() == int:
float(değer.get())
şeklinde kullanıcının bir float değer girmesini söyleyebilirsin
import tkinter as tk
def validate_keys(
action, index, value_if_allowed, prior_value,
text, validation_type, trigger_type, widget_name
):
if value_if_allowed:
try:
float(value_if_allowed)
return True
except ValueError:
return False
else:
return True
root = tk.Tk()
entry = tk.Entry(
root, validate="key",
validatecommand=(
root.register(validate_keys),
'%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W'
)
)
entry.pack()
root.mainloop()
validate()
fonksiyonu eğer true
değer döndürürse değişiklik entry
'e yansıyor, false
değer döndürürse değişiklik olmuyor.
Biraz burdan kopya çekmiş olabilirim.
Cevaplar için teşekkürler, tam istediğim gibi bir özellik bulamadım ama if koşulları ile kontrol eden bir fonksiyon yaptım şimdilik işimi görüyor.
2 Beğeni