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
Lepaskan: 2024-11-04 07:21:02
asal
1003 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan