Python - Tkinter - Entry() Giriş Türünü Sınırlandırmak

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