Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah Saya Boleh Memastikan Pengikatan Widget Teks Tkinter Tersuai Saya Dilaksanakan Selepas Pengikatan Terbina dalam?
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
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!