Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีทำให้ข้อความเฉพาะไม่ thểลบได้ใน Tkinter

ใน Tkinter ผู้ใช้สามารถป้อนข้อความได้โดยใช้วิджชั่นป้อนข้อความพื้นฐานสองอย่างคือ วิджชั่น Text และวิджชั่น Entry วิджชั่น Text โดยทั่วไปใช้รับอินพุตผู้ใช้หลายบรรทัด ในขณะที่ใน Entry widget ผู้ใช้พิมพ์ได้เฉพาะข้อความบรรทัดเดียว

คุณสามารถปรับแต่งวิджชั่นเหล่านี้และเพิ่มฟังก์ชันเพิ่มเติมโดยใช้ฟังก์ชันและเมธอดไลบรารีในตัว ในการตรวจสอบความถูกต้องของอินพุตใน Entry widget คุณสามารถใช้เมธอด register() เมธอดนี้คืนค่าสตริงที่สามารถใช้เรียกฟังก์ชันในขั้นตอนต่อไปได้

ในการตรวจสอบความถูกต้องของอินพุตใน Entry widget ให้ใช้เมธอด config(**options) และส่งอาร์กิวเมนต์ validate และ validatecommand

  • validate – ระบุเมื่อใดที่ฟังก์ชัน callback ต้องถูกเรียกเพื่อตรวจสอบอินพุตใน Entry หรือ Text widget ที่กำหนด ตัวอย่างเช่น "key" คือค่าระบุว่าทุกครั้งที่ผู้ใช้กด คีย์ (จากคีย์บอร์ด) ฟังก์ชัน callback จะถูกเรียก คุณสามารถใช้ตัวเลือกอื่นๆ ได้เช่น focus, focusin, focusout, none, all เป็นต้น

  • validatecommand – ระบุค่าที่ขึ้นอยู่กับค่าที่คืนโดยฟังก์ชัน callback ในการระบุค่าใน validatecommand='f' คุณสามารถใช้รหัสแทนที่ Callback ต่างๆ ที่บอกว่าค่าใดและวิธีไหนที่คืนโดยฟังก์ชัน callback

ในการตรวจสอบอินพุตใน Entry widget คุณต้องลงทะเบียนฟังก์ชัน callback และกำหนดค่า Entry widget โดยส่งอาร์กิวเมนต์ที่ตรวจสอบเงื่อนไขที่กำหนดในฟังก์ชัน callback

ตัวอย่าง

มาพิจารณาตัวอย่างที่เราต้องการตรวจสอบ Entry widget ให้ข้อความเฉพาะไม่สามารถลบได้โดยผู้ใช้ นอกจากนี้ เราสามารถทำให้ไม่ได้ลบโดยตรวจสอบสตริงด้วยฟังก์ชัน startswith("string")

# นำเข้าไลบรารีที่จำเป็น
from tkinter import *

# สร้างอินสแตนซ์หน้าต่าง Tkinter
win = Tk()
win.geometry("700x350")

# กำหนดฟังก์ชันทำให้ข้อความไม่ได้ลบ
def make_non_removable(text):
    return text.startswith("Enter your Email Id:")

# สร้าง entry widget
entry = Entry(win, bg="black", fg="white")
entry.pack(side="top", fill="x")

# เพิ่มข้อความเริ่มต้น
entry.insert(END, "Enter your Email Id:")

validate_entry = (win.register(make_non_removable), '%P')
entry.config(validate='key', validatecommand=validate_entry)

win.mainloop()

ผลลัพธ์

เมื่อรัน จะแสดง Entry widget ในหน้าต่างพร้อมข้อความเริ่มต้นที่ไม่ได้ลบ "Enter your Email Id:"

วิธีทำให้ข้อความเฉพาะไม่ thểลบได้ใน Tkinter