Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Memastikan Pengikatan Widget Teks Tkinter Tersuai Saya Dilaksanakan Selepas Pengikatan Terbina dalam?

Bagaimanakah Saya Boleh Memastikan Pengikatan Widget Teks Tkinter Tersuai Saya Dilaksanakan Selepas Pengikatan Terbina dalam?

Susan Sarandon
Susan Sarandonasal
2024-11-04 07:21:021010semak imbas

How Can I Ensure My Custom Tkinter Text Widget Bindings Execute After Built-in Bindings?

Mengikat Peristiwa Tersuai dalam Widget Teks Tkinter selepas Pengikatan Terbina dalam

Memahami Isu

Dalam widget Teks Tkinter, anda mungkin menghadapi situasi di mana pengikatan acara tersuai anda sedang dilaksanakan sebelum pengikatan terbina dalam widget, menyebabkan percanggahan dalam kemas kini teks.

Penyelesaian

Untuk menangani isu ini, anda boleh mengubah susunan acara diproses. Widget Tkinter diberikan hierarki "bindtags" yang menentukan susunan pelaksanaan mengikat.

1. Menyusun Semula Bindtags

Tertib lalai bindtags ialah: widget, kelas, peringkat atas, semua. Anda boleh menukar susunan dengan meletakkan bindtag widget selepas bindtag kelas. Dengan cara ini, pengikatan kelas akan dilaksanakan sebelum pengikatan widget.

<code class="python"># Modify the bindtags to rearrange the order
entry.bindtags(('Entry', '.entry', '.', 'all'))</code>

2. Memperkenalkan Bindtags Tambahan

Sebagai alternatif, anda boleh membuat bindtag baharu selepas bindtag kelas dan mengikat acara tersuai anda pada teg baharu ini.

<code class="python"># Create a new bindtag "post-class-bindings" after the class bindtag
entry.bindtags(('.entry','Entry','post-class-bindings', '.', 'all'))

# Bind your custom events to "post-class-bindings"
entry.bind_class("post-class-bindings", "<KeyPress>", OnKeyPress)</code>

Faedah Kedua-dua Pendekatan

  • Menyusun Semula Bindtags: Mempengaruhi semua pengikatan pada widget.
  • Memperkenalkan Bindtags Baharu: Membenarkan pengikatan terpilih berdasarkan acara pada susunan bindtag.

Kod Contoh

Kod berikut menunjukkan kedua-dua pendekatan:

<code class="python">import Tkinter

def OnKeyPress(event):
    value = event.widget.get()
    string="value of %s is '%s'" % (event.widget._name, value)
    status.configure(text=string)

root = Tkinter.Tk()

entry1 = Tkinter.Entry(root, name="entry1")
entry2 = Tkinter.Entry(root, name="entry2")
entry3 = Tkinter.Entry(root, name="entry3")

# Three different bindtags
entry1.bindtags(('.entry1', 'Entry', '.', 'all'))
entry2.bindtags(('Entry', '.entry2', '.', 'all'))
entry3.bindtags(('.entry3','Entry','post-class-bindings', '.', 'all'))

# Bind the first two entries to the default bind tags
entry1.bind("<KeyPress>", OnKeyPress)
entry2.bind("<KeyPress>", OnKeyPress)

# Bind the third entry to the "post-class-bindings" bind tag
entry3.bind_class("post-class-bindings", "<KeyPress>", OnKeyPress)

# ... Continue with your GUI code
</code>

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memastikan Pengikatan Widget Teks Tkinter Tersuai Saya Dilaksanakan Selepas Pengikatan Terbina dalam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn