সঠিক উত্তরটি হ'ল, validatecommand
উইজেটের বৈশিষ্ট্যটি ব্যবহার করুন । দুর্ভাগ্যক্রমে এই বৈশিষ্ট্যটি টিন্টেটার বিশ্বে মারাত্মকভাবে নীচে নথিভুক্ত করা হয়েছে, যদিও এটি যথেষ্ট পরিমাণে টক দুনিয়ায় ডকুমেন্টেড। যদিও এটি যথাযথভাবে নথিভুক্ত করা হয়নি, তবে আপনার কাছে বাইন্ডিংগুলি বা ভেরিয়েবলগুলি সন্ধান না করা বা বৈধতা প্রক্রিয়াটির মধ্যে থেকে উইজেটটি সংশোধন না করে যাচাইকরণের যা কিছু দরকার তা রয়েছে।
কৌশলটি হ'ল এটি আপনার জালিয়াতি কমান্ডের বিশেষ মানগুলিতে টিন্টার পাস থাকতে পারে তা জানতে। এই মানগুলি আপনাকে ডেটা বৈধ কিনা তা সিদ্ধান্ত নেওয়ার জন্য আপনার প্রয়োজনীয় সমস্ত তথ্য দেয়: সম্পাদনার পূর্বে মান, সম্পাদনাটি বৈধ হলে সম্পাদনার পরে মান এবং অন্যান্য বেশ কয়েকটি তথ্যের বিট। এগুলি ব্যবহার করার জন্য, আপনার বৈধতা আদেশের কাছে এই তথ্যটি পাস করার জন্য আপনাকে কিছুটা ভুডু করতে হবে।
দ্রষ্টব্য: বৈধতা কমান্ডটি ফেরত দেয় True
বা হয় তা গুরুত্বপূর্ণ False
। অন্য যে কোনও কিছুই উইজেটের জন্য বৈধতা বন্ধ করে দেবে।
এখানে এমন একটি উদাহরণ রয়েছে যা কেবল ছোট হাতের অক্ষরে অনুমতি দেয় (এবং সেই সমস্ত মজার মানগুলি মুদ্রণ করে):
import tkinter as tk
class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
vcmd = (self.register(self.onValidate),
'%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')
self.entry = tk.Entry(self, validate="key", validatecommand=vcmd)
self.text = tk.Text(self, height=10, width=40)
self.entry.pack(side="top", fill="x")
self.text.pack(side="bottom", fill="both", expand=True)
def onValidate(self, d, i, P, s, S, v, V, W):
self.text.delete("1.0", "end")
self.text.insert("end","OnValidate:\n")
self.text.insert("end","d='%s'\n" % d)
self.text.insert("end","i='%s'\n" % i)
self.text.insert("end","P='%s'\n" % P)
self.text.insert("end","s='%s'\n" % s)
self.text.insert("end","S='%s'\n" % S)
self.text.insert("end","v='%s'\n" % v)
self.text.insert("end","V='%s'\n" % V)
self.text.insert("end","W='%s'\n" % W)
if S == S.lower():
return True
else:
self.bell()
return False
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(fill="both", expand=True)
root.mainloop()
আপনি যখন register
পদ্ধতিটি কল করেন তখন ফণাটির নীচে কী ঘটে যায় সে সম্পর্কে আরও তথ্যের জন্য , ইনপুট বৈধতা টিকিন্টার দেখুন