Why does <> binding in Python's Tkinter trigger spuriously when double clicking an Entry widget?












0















As part of a larger bock of code, I discovered an oddity with tkinter listbox bindings. The below code gives a breakdown of the issue. When binding a listbox with 'listboxselected', selecting an item within that listbox, then double left clicking on the Entry, the listboxselected event is triggered once.



I have tested this in python 3.3.2, 3.6.3 and 3.7.1. The error only occurs in the two latter versions. I have checked the doc's and cant find any updates to cause this issue. Does anyone have any idea to why this behaviour may be occurring?



from tkinter import Tk, Listbox, Entry, Button
from functools import partial

root = Tk()

myList = Listbox(root)
myList.insert("end", "spam", "eggs", "chips")
myList.pack()
myList.bind("<<ListboxSelect>>", partial(print))

myEntry = Entry(root)
myEntry.pack()









share|improve this question





























    0















    As part of a larger bock of code, I discovered an oddity with tkinter listbox bindings. The below code gives a breakdown of the issue. When binding a listbox with 'listboxselected', selecting an item within that listbox, then double left clicking on the Entry, the listboxselected event is triggered once.



    I have tested this in python 3.3.2, 3.6.3 and 3.7.1. The error only occurs in the two latter versions. I have checked the doc's and cant find any updates to cause this issue. Does anyone have any idea to why this behaviour may be occurring?



    from tkinter import Tk, Listbox, Entry, Button
    from functools import partial

    root = Tk()

    myList = Listbox(root)
    myList.insert("end", "spam", "eggs", "chips")
    myList.pack()
    myList.bind("<<ListboxSelect>>", partial(print))

    myEntry = Entry(root)
    myEntry.pack()









    share|improve this question



























      0












      0








      0








      As part of a larger bock of code, I discovered an oddity with tkinter listbox bindings. The below code gives a breakdown of the issue. When binding a listbox with 'listboxselected', selecting an item within that listbox, then double left clicking on the Entry, the listboxselected event is triggered once.



      I have tested this in python 3.3.2, 3.6.3 and 3.7.1. The error only occurs in the two latter versions. I have checked the doc's and cant find any updates to cause this issue. Does anyone have any idea to why this behaviour may be occurring?



      from tkinter import Tk, Listbox, Entry, Button
      from functools import partial

      root = Tk()

      myList = Listbox(root)
      myList.insert("end", "spam", "eggs", "chips")
      myList.pack()
      myList.bind("<<ListboxSelect>>", partial(print))

      myEntry = Entry(root)
      myEntry.pack()









      share|improve this question
















      As part of a larger bock of code, I discovered an oddity with tkinter listbox bindings. The below code gives a breakdown of the issue. When binding a listbox with 'listboxselected', selecting an item within that listbox, then double left clicking on the Entry, the listboxselected event is triggered once.



      I have tested this in python 3.3.2, 3.6.3 and 3.7.1. The error only occurs in the two latter versions. I have checked the doc's and cant find any updates to cause this issue. Does anyone have any idea to why this behaviour may be occurring?



      from tkinter import Tk, Listbox, Entry, Button
      from functools import partial

      root = Tk()

      myList = Listbox(root)
      myList.insert("end", "spam", "eggs", "chips")
      myList.pack()
      myList.bind("<<ListboxSelect>>", partial(print))

      myEntry = Entry(root)
      myEntry.pack()






      python tkinter listbox tkinter-entry event-binding






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 2 at 5:41









      Bryan Oakley

      220k22271432




      220k22271432










      asked Jan 2 at 5:17









      D HallD Hall

      383




      383
























          1 Answer
          1






          active

          oldest

          votes


















          1














          I can't duplicate this on OSX, but my guess is that when you double-click in the entry, the text in the entry is selected. When the text is selected (even if there is nothing to select), the item in the listbox is de-selected. The de-selection triggers the binding.



          If you want to be able to have something in both the listbox and entry selected, set exportselection=False in the listbox.






          share|improve this answer
























          • That's spot on thanks! Had me scratching my head for a while.

            – D Hall
            Jan 2 at 5:48











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54001541%2fwhy-does-listboxselect-binding-in-pythons-tkinter-trigger-spuriously-when-d%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          I can't duplicate this on OSX, but my guess is that when you double-click in the entry, the text in the entry is selected. When the text is selected (even if there is nothing to select), the item in the listbox is de-selected. The de-selection triggers the binding.



          If you want to be able to have something in both the listbox and entry selected, set exportselection=False in the listbox.






          share|improve this answer
























          • That's spot on thanks! Had me scratching my head for a while.

            – D Hall
            Jan 2 at 5:48
















          1














          I can't duplicate this on OSX, but my guess is that when you double-click in the entry, the text in the entry is selected. When the text is selected (even if there is nothing to select), the item in the listbox is de-selected. The de-selection triggers the binding.



          If you want to be able to have something in both the listbox and entry selected, set exportselection=False in the listbox.






          share|improve this answer
























          • That's spot on thanks! Had me scratching my head for a while.

            – D Hall
            Jan 2 at 5:48














          1












          1








          1







          I can't duplicate this on OSX, but my guess is that when you double-click in the entry, the text in the entry is selected. When the text is selected (even if there is nothing to select), the item in the listbox is de-selected. The de-selection triggers the binding.



          If you want to be able to have something in both the listbox and entry selected, set exportselection=False in the listbox.






          share|improve this answer













          I can't duplicate this on OSX, but my guess is that when you double-click in the entry, the text in the entry is selected. When the text is selected (even if there is nothing to select), the item in the listbox is de-selected. The de-selection triggers the binding.



          If you want to be able to have something in both the listbox and entry selected, set exportselection=False in the listbox.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jan 2 at 5:38









          Bryan OakleyBryan Oakley

          220k22271432




          220k22271432













          • That's spot on thanks! Had me scratching my head for a while.

            – D Hall
            Jan 2 at 5:48



















          • That's spot on thanks! Had me scratching my head for a while.

            – D Hall
            Jan 2 at 5:48

















          That's spot on thanks! Had me scratching my head for a while.

          – D Hall
          Jan 2 at 5:48





          That's spot on thanks! Had me scratching my head for a while.

          – D Hall
          Jan 2 at 5:48




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54001541%2fwhy-does-listboxselect-binding-in-pythons-tkinter-trigger-spuriously-when-d%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          MongoDB - Not Authorized To Execute Command

          How to fix TextFormField cause rebuild widget in Flutter

          in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith