Tkinter how to get button image address












0














I am writing a program for a school project and have come to a point where i need to check the image that is on my button so that i can run it through an if command as followed:



root=Tk()

flag = PhotoImage(file='flag.png')

box = PhotoImage(file='box.png')

def function(event):
if(button.cget('image')==flag):
button.config(image=box)
else:
button.config(image=flag)


button=Button(root)
button.config(image=box)
button.bind('<ButtonRelease>', function)
button.pack()
root.mainloop()


i was expecting it to change the image between flag and box everytime i click on the button but instead it just changes the image to flag the first time i click and is unresponsive for the rest of the clicks










share|improve this question







New contributor




Mislav Sirac is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

























    0














    I am writing a program for a school project and have come to a point where i need to check the image that is on my button so that i can run it through an if command as followed:



    root=Tk()

    flag = PhotoImage(file='flag.png')

    box = PhotoImage(file='box.png')

    def function(event):
    if(button.cget('image')==flag):
    button.config(image=box)
    else:
    button.config(image=flag)


    button=Button(root)
    button.config(image=box)
    button.bind('<ButtonRelease>', function)
    button.pack()
    root.mainloop()


    i was expecting it to change the image between flag and box everytime i click on the button but instead it just changes the image to flag the first time i click and is unresponsive for the rest of the clicks










    share|improve this question







    New contributor




    Mislav Sirac is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.























      0












      0








      0







      I am writing a program for a school project and have come to a point where i need to check the image that is on my button so that i can run it through an if command as followed:



      root=Tk()

      flag = PhotoImage(file='flag.png')

      box = PhotoImage(file='box.png')

      def function(event):
      if(button.cget('image')==flag):
      button.config(image=box)
      else:
      button.config(image=flag)


      button=Button(root)
      button.config(image=box)
      button.bind('<ButtonRelease>', function)
      button.pack()
      root.mainloop()


      i was expecting it to change the image between flag and box everytime i click on the button but instead it just changes the image to flag the first time i click and is unresponsive for the rest of the clicks










      share|improve this question







      New contributor




      Mislav Sirac is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      I am writing a program for a school project and have come to a point where i need to check the image that is on my button so that i can run it through an if command as followed:



      root=Tk()

      flag = PhotoImage(file='flag.png')

      box = PhotoImage(file='box.png')

      def function(event):
      if(button.cget('image')==flag):
      button.config(image=box)
      else:
      button.config(image=flag)


      button=Button(root)
      button.config(image=box)
      button.bind('<ButtonRelease>', function)
      button.pack()
      root.mainloop()


      i was expecting it to change the image between flag and box everytime i click on the button but instead it just changes the image to flag the first time i click and is unresponsive for the rest of the clicks







      python tkinter python-idle






      share|improve this question







      New contributor




      Mislav Sirac is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question







      New contributor




      Mislav Sirac is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question






      New contributor




      Mislav Sirac is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 2 days ago









      Mislav Sirac

      1




      1




      New contributor




      Mislav Sirac is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Mislav Sirac is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Mislav Sirac is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.
























          2 Answers
          2






          active

          oldest

          votes


















          1














          You just need to do the test as if(button.cget('image')==str(flag)): (note addition of str() to the image). The image option is just a string, containing the auto-generated name of the image object in the Tcl/Tk environment; the Python image object converts to this string, but doesn't contain the code needed to implement comparison to strings so you need to make this conversion explicit.






          share|improve this answer





























            0














            Try this code



            root=Tk()

            flag = PhotoImage(file='Denaro.gif')

            box = PhotoImage(file='Andre.gif')

            def function(event):
            if(button.cget('image')=='pyimage1'):
            button.config(image=box)
            else:
            button.config(image=flag)


            button=Button(root)
            button.config(image=box)
            button.bind('<ButtonRelease>', function)
            button.pack()
            root.mainloop()





            share|improve this answer





















            • it worked thanks!
              – Mislav Sirac
              2 days ago










            • I believe jasonharper's subsequent answer is a explanation and generalization of this one in that str(flag) will currently be 'pyimage1' (and str(box) will be 'pyimage2').
              – Terry Jan Reedy
              2 days ago










            • Terry, you are right, I'm beginner
              – patel
              yesterday











            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
            });


            }
            });






            Mislav Sirac is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53945329%2ftkinter-how-to-get-button-image-address%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            You just need to do the test as if(button.cget('image')==str(flag)): (note addition of str() to the image). The image option is just a string, containing the auto-generated name of the image object in the Tcl/Tk environment; the Python image object converts to this string, but doesn't contain the code needed to implement comparison to strings so you need to make this conversion explicit.






            share|improve this answer


























              1














              You just need to do the test as if(button.cget('image')==str(flag)): (note addition of str() to the image). The image option is just a string, containing the auto-generated name of the image object in the Tcl/Tk environment; the Python image object converts to this string, but doesn't contain the code needed to implement comparison to strings so you need to make this conversion explicit.






              share|improve this answer
























                1












                1








                1






                You just need to do the test as if(button.cget('image')==str(flag)): (note addition of str() to the image). The image option is just a string, containing the auto-generated name of the image object in the Tcl/Tk environment; the Python image object converts to this string, but doesn't contain the code needed to implement comparison to strings so you need to make this conversion explicit.






                share|improve this answer












                You just need to do the test as if(button.cget('image')==str(flag)): (note addition of str() to the image). The image option is just a string, containing the auto-generated name of the image object in the Tcl/Tk environment; the Python image object converts to this string, but doesn't contain the code needed to implement comparison to strings so you need to make this conversion explicit.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 2 days ago









                jasonharper

                7,4472929




                7,4472929

























                    0














                    Try this code



                    root=Tk()

                    flag = PhotoImage(file='Denaro.gif')

                    box = PhotoImage(file='Andre.gif')

                    def function(event):
                    if(button.cget('image')=='pyimage1'):
                    button.config(image=box)
                    else:
                    button.config(image=flag)


                    button=Button(root)
                    button.config(image=box)
                    button.bind('<ButtonRelease>', function)
                    button.pack()
                    root.mainloop()





                    share|improve this answer





















                    • it worked thanks!
                      – Mislav Sirac
                      2 days ago










                    • I believe jasonharper's subsequent answer is a explanation and generalization of this one in that str(flag) will currently be 'pyimage1' (and str(box) will be 'pyimage2').
                      – Terry Jan Reedy
                      2 days ago










                    • Terry, you are right, I'm beginner
                      – patel
                      yesterday
















                    0














                    Try this code



                    root=Tk()

                    flag = PhotoImage(file='Denaro.gif')

                    box = PhotoImage(file='Andre.gif')

                    def function(event):
                    if(button.cget('image')=='pyimage1'):
                    button.config(image=box)
                    else:
                    button.config(image=flag)


                    button=Button(root)
                    button.config(image=box)
                    button.bind('<ButtonRelease>', function)
                    button.pack()
                    root.mainloop()





                    share|improve this answer





















                    • it worked thanks!
                      – Mislav Sirac
                      2 days ago










                    • I believe jasonharper's subsequent answer is a explanation and generalization of this one in that str(flag) will currently be 'pyimage1' (and str(box) will be 'pyimage2').
                      – Terry Jan Reedy
                      2 days ago










                    • Terry, you are right, I'm beginner
                      – patel
                      yesterday














                    0












                    0








                    0






                    Try this code



                    root=Tk()

                    flag = PhotoImage(file='Denaro.gif')

                    box = PhotoImage(file='Andre.gif')

                    def function(event):
                    if(button.cget('image')=='pyimage1'):
                    button.config(image=box)
                    else:
                    button.config(image=flag)


                    button=Button(root)
                    button.config(image=box)
                    button.bind('<ButtonRelease>', function)
                    button.pack()
                    root.mainloop()





                    share|improve this answer












                    Try this code



                    root=Tk()

                    flag = PhotoImage(file='Denaro.gif')

                    box = PhotoImage(file='Andre.gif')

                    def function(event):
                    if(button.cget('image')=='pyimage1'):
                    button.config(image=box)
                    else:
                    button.config(image=flag)


                    button=Button(root)
                    button.config(image=box)
                    button.bind('<ButtonRelease>', function)
                    button.pack()
                    root.mainloop()






                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered 2 days ago









                    patel

                    846




                    846












                    • it worked thanks!
                      – Mislav Sirac
                      2 days ago










                    • I believe jasonharper's subsequent answer is a explanation and generalization of this one in that str(flag) will currently be 'pyimage1' (and str(box) will be 'pyimage2').
                      – Terry Jan Reedy
                      2 days ago










                    • Terry, you are right, I'm beginner
                      – patel
                      yesterday


















                    • it worked thanks!
                      – Mislav Sirac
                      2 days ago










                    • I believe jasonharper's subsequent answer is a explanation and generalization of this one in that str(flag) will currently be 'pyimage1' (and str(box) will be 'pyimage2').
                      – Terry Jan Reedy
                      2 days ago










                    • Terry, you are right, I'm beginner
                      – patel
                      yesterday
















                    it worked thanks!
                    – Mislav Sirac
                    2 days ago




                    it worked thanks!
                    – Mislav Sirac
                    2 days ago












                    I believe jasonharper's subsequent answer is a explanation and generalization of this one in that str(flag) will currently be 'pyimage1' (and str(box) will be 'pyimage2').
                    – Terry Jan Reedy
                    2 days ago




                    I believe jasonharper's subsequent answer is a explanation and generalization of this one in that str(flag) will currently be 'pyimage1' (and str(box) will be 'pyimage2').
                    – Terry Jan Reedy
                    2 days ago












                    Terry, you are right, I'm beginner
                    – patel
                    yesterday




                    Terry, you are right, I'm beginner
                    – patel
                    yesterday










                    Mislav Sirac is a new contributor. Be nice, and check out our Code of Conduct.










                    draft saved

                    draft discarded


















                    Mislav Sirac is a new contributor. Be nice, and check out our Code of Conduct.













                    Mislav Sirac is a new contributor. Be nice, and check out our Code of Conduct.












                    Mislav Sirac is a new contributor. Be nice, and check out our Code of Conduct.
















                    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.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • 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%2f53945329%2ftkinter-how-to-get-button-image-address%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

                    generate and download xml file after input submit (php and mysql) - JPK

                    Angular Downloading a file using contenturl with Basic Authentication

                    Can't read property showImagePicker of undefined in react native iOS