Python coin flipper with GUI











up vote
4
down vote

favorite












I am doing some simple projects in an attempt to get good at programming, this is my first GUI would love some feedback, and some guidelines.



from tkinter import *
import random

root = Tk()
root.resizable(False, False)

root.title('Coinflipper')

topframe = Frame(root)
topframe.pack()
botframe = Frame(root)
botframe.pack(side=BOTTOM)
midframe = Frame(root)
midframe.pack()

choice = Label(topframe, text="Enter the number of flips: ")
choice.grid(row=1)
ent = Entry(topframe)
ent.grid(row=1, column=2)

clickit = Button(botframe, text="FLIP THE COIN!!!")
clickit.pack()

out = Text(midframe, width=15, height=1)
out2 = Text(midframe, width=15, height=1)
out.grid(row=1, column=1, columnspan=3)
out2.grid(row=2, column=1, columnspan=3)


def flipy(event):
guess = ent.get()
heads =
tails =

if guess == '' or guess == str(guess):
out.delete(1.0, "end-1c")
out.insert("end-1c", 'Invalid')

for flips in range(int(guess)):
out.delete(1.0, "end-1c")
out2.delete(1.0, "end-1c")
random_number = random.randint(1, 2)
if random_number == 1:
heads.append("Heads")
elif random_number == 2:
tails.append("Tails")

out.insert("end-1c", len(tails))
out.insert("end-1c", " -TAILS")
out2.insert("end-1c", len(heads))
out2.insert("end-1c", " -HEADS")


clickit.bind("<Button-1>", flipy)

root.mainloop()









share|improve this question







New contributor




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
























    up vote
    4
    down vote

    favorite












    I am doing some simple projects in an attempt to get good at programming, this is my first GUI would love some feedback, and some guidelines.



    from tkinter import *
    import random

    root = Tk()
    root.resizable(False, False)

    root.title('Coinflipper')

    topframe = Frame(root)
    topframe.pack()
    botframe = Frame(root)
    botframe.pack(side=BOTTOM)
    midframe = Frame(root)
    midframe.pack()

    choice = Label(topframe, text="Enter the number of flips: ")
    choice.grid(row=1)
    ent = Entry(topframe)
    ent.grid(row=1, column=2)

    clickit = Button(botframe, text="FLIP THE COIN!!!")
    clickit.pack()

    out = Text(midframe, width=15, height=1)
    out2 = Text(midframe, width=15, height=1)
    out.grid(row=1, column=1, columnspan=3)
    out2.grid(row=2, column=1, columnspan=3)


    def flipy(event):
    guess = ent.get()
    heads =
    tails =

    if guess == '' or guess == str(guess):
    out.delete(1.0, "end-1c")
    out.insert("end-1c", 'Invalid')

    for flips in range(int(guess)):
    out.delete(1.0, "end-1c")
    out2.delete(1.0, "end-1c")
    random_number = random.randint(1, 2)
    if random_number == 1:
    heads.append("Heads")
    elif random_number == 2:
    tails.append("Tails")

    out.insert("end-1c", len(tails))
    out.insert("end-1c", " -TAILS")
    out2.insert("end-1c", len(heads))
    out2.insert("end-1c", " -HEADS")


    clickit.bind("<Button-1>", flipy)

    root.mainloop()









    share|improve this question







    New contributor




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






















      up vote
      4
      down vote

      favorite









      up vote
      4
      down vote

      favorite











      I am doing some simple projects in an attempt to get good at programming, this is my first GUI would love some feedback, and some guidelines.



      from tkinter import *
      import random

      root = Tk()
      root.resizable(False, False)

      root.title('Coinflipper')

      topframe = Frame(root)
      topframe.pack()
      botframe = Frame(root)
      botframe.pack(side=BOTTOM)
      midframe = Frame(root)
      midframe.pack()

      choice = Label(topframe, text="Enter the number of flips: ")
      choice.grid(row=1)
      ent = Entry(topframe)
      ent.grid(row=1, column=2)

      clickit = Button(botframe, text="FLIP THE COIN!!!")
      clickit.pack()

      out = Text(midframe, width=15, height=1)
      out2 = Text(midframe, width=15, height=1)
      out.grid(row=1, column=1, columnspan=3)
      out2.grid(row=2, column=1, columnspan=3)


      def flipy(event):
      guess = ent.get()
      heads =
      tails =

      if guess == '' or guess == str(guess):
      out.delete(1.0, "end-1c")
      out.insert("end-1c", 'Invalid')

      for flips in range(int(guess)):
      out.delete(1.0, "end-1c")
      out2.delete(1.0, "end-1c")
      random_number = random.randint(1, 2)
      if random_number == 1:
      heads.append("Heads")
      elif random_number == 2:
      tails.append("Tails")

      out.insert("end-1c", len(tails))
      out.insert("end-1c", " -TAILS")
      out2.insert("end-1c", len(heads))
      out2.insert("end-1c", " -HEADS")


      clickit.bind("<Button-1>", flipy)

      root.mainloop()









      share|improve this question







      New contributor




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











      I am doing some simple projects in an attempt to get good at programming, this is my first GUI would love some feedback, and some guidelines.



      from tkinter import *
      import random

      root = Tk()
      root.resizable(False, False)

      root.title('Coinflipper')

      topframe = Frame(root)
      topframe.pack()
      botframe = Frame(root)
      botframe.pack(side=BOTTOM)
      midframe = Frame(root)
      midframe.pack()

      choice = Label(topframe, text="Enter the number of flips: ")
      choice.grid(row=1)
      ent = Entry(topframe)
      ent.grid(row=1, column=2)

      clickit = Button(botframe, text="FLIP THE COIN!!!")
      clickit.pack()

      out = Text(midframe, width=15, height=1)
      out2 = Text(midframe, width=15, height=1)
      out.grid(row=1, column=1, columnspan=3)
      out2.grid(row=2, column=1, columnspan=3)


      def flipy(event):
      guess = ent.get()
      heads =
      tails =

      if guess == '' or guess == str(guess):
      out.delete(1.0, "end-1c")
      out.insert("end-1c", 'Invalid')

      for flips in range(int(guess)):
      out.delete(1.0, "end-1c")
      out2.delete(1.0, "end-1c")
      random_number = random.randint(1, 2)
      if random_number == 1:
      heads.append("Heads")
      elif random_number == 2:
      tails.append("Tails")

      out.insert("end-1c", len(tails))
      out.insert("end-1c", " -TAILS")
      out2.insert("end-1c", len(heads))
      out2.insert("end-1c", " -HEADS")


      clickit.bind("<Button-1>", flipy)

      root.mainloop()






      python python-3.x gui tkinter user-interface






      share|improve this question







      New contributor




      skyn37 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




      skyn37 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




      skyn37 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









      skyn37

      283




      283




      New contributor




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





      New contributor





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






      skyn37 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

















          up vote
          3
          down vote



          accepted










          You are abusing the heads & tails lists into making simple counters.



          heads = 
          tails =

          for flips in range(int(guess)):
          random_number = random.randint(1, 2)
          if random_number == 1:
          heads.append("Heads")
          elif random_number == 2:
          tails.append("Tails")

          len(tails)
          len(heads)


          This could be replaced with simply:



          heads = 0
          tails = 0

          for flips in range(int(guess)):
          random_number = random.randint(1, 2)
          if random_number == 1:
          heads += 1
          else:
          tails += 1





          share|improve this answer





















          • Thank you ! I tend to overcomplicate things for myself. Guess that will go away with practice.
            – skyn37
            8 hours ago


















          up vote
          0
          down vote













          Skyn37,



          This a great first time GUI setup.
          Only saw a few things I would change to make it easier on yourself.
          I don't see anything wrong with your Function.



          Things that need work:



          1.Line 9 to 14: These are unnecessary as you already started using grid. Yet this is good practice. Just not needed for this program.



          2.Also try to organize your code better. It helps yourself and also others to quickly identify what the code is doing. I made a few tweaks to your code. Organized it a bit, and made a few minor changes. Placed everything using Grid and Tidied up the GUI a bit.



          """Geometry and Title"""
          root.title('Coinflipper')
          root.geometry("300x100")
          root.resizable(False,False)

          """Labels & Text Box"""
          choice = Label(text="How Many Flips: ")
          T = Label(text="Tails: ")
          H = Label(text="Heads: ")
          ent = Entry(root)
          out = Text(width=15, height=1)
          out2 = Text(width=15, height=1)

          """Grid Positions"""
          choice.grid(row=0, column=0, sticky=E)
          T.grid(row=1,column=0,sticky=E)
          H.grid(row=2,column=0,sticky=E)
          ent.grid(row=0, column=1, columnspan=3)
          out.grid(row=1, column=1, columnspan=3)
          out2.grid(row=2, column=1, columnspan=3)

          """Button Text and Position"""
          clickit = Button(text="FLIP THE COIN!!!")
          clickit.grid(row=3,column=1)


          Overall great work!






          share|improve this answer










          New contributor




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


















            Your Answer





            StackExchange.ifUsing("editor", function () {
            return StackExchange.using("mathjaxEditing", function () {
            StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
            StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
            });
            });
            }, "mathjax-editing");

            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: "196"
            };
            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',
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            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
            });


            }
            });






            skyn37 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%2fcodereview.stackexchange.com%2fquestions%2f208358%2fpython-coin-flipper-with-gui%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








            up vote
            3
            down vote



            accepted










            You are abusing the heads & tails lists into making simple counters.



            heads = 
            tails =

            for flips in range(int(guess)):
            random_number = random.randint(1, 2)
            if random_number == 1:
            heads.append("Heads")
            elif random_number == 2:
            tails.append("Tails")

            len(tails)
            len(heads)


            This could be replaced with simply:



            heads = 0
            tails = 0

            for flips in range(int(guess)):
            random_number = random.randint(1, 2)
            if random_number == 1:
            heads += 1
            else:
            tails += 1





            share|improve this answer





















            • Thank you ! I tend to overcomplicate things for myself. Guess that will go away with practice.
              – skyn37
              8 hours ago















            up vote
            3
            down vote



            accepted










            You are abusing the heads & tails lists into making simple counters.



            heads = 
            tails =

            for flips in range(int(guess)):
            random_number = random.randint(1, 2)
            if random_number == 1:
            heads.append("Heads")
            elif random_number == 2:
            tails.append("Tails")

            len(tails)
            len(heads)


            This could be replaced with simply:



            heads = 0
            tails = 0

            for flips in range(int(guess)):
            random_number = random.randint(1, 2)
            if random_number == 1:
            heads += 1
            else:
            tails += 1





            share|improve this answer





















            • Thank you ! I tend to overcomplicate things for myself. Guess that will go away with practice.
              – skyn37
              8 hours ago













            up vote
            3
            down vote



            accepted







            up vote
            3
            down vote



            accepted






            You are abusing the heads & tails lists into making simple counters.



            heads = 
            tails =

            for flips in range(int(guess)):
            random_number = random.randint(1, 2)
            if random_number == 1:
            heads.append("Heads")
            elif random_number == 2:
            tails.append("Tails")

            len(tails)
            len(heads)


            This could be replaced with simply:



            heads = 0
            tails = 0

            for flips in range(int(guess)):
            random_number = random.randint(1, 2)
            if random_number == 1:
            heads += 1
            else:
            tails += 1





            share|improve this answer












            You are abusing the heads & tails lists into making simple counters.



            heads = 
            tails =

            for flips in range(int(guess)):
            random_number = random.randint(1, 2)
            if random_number == 1:
            heads.append("Heads")
            elif random_number == 2:
            tails.append("Tails")

            len(tails)
            len(heads)


            This could be replaced with simply:



            heads = 0
            tails = 0

            for flips in range(int(guess)):
            random_number = random.randint(1, 2)
            if random_number == 1:
            heads += 1
            else:
            tails += 1






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered yesterday









            AJNeufeld

            3,755317




            3,755317












            • Thank you ! I tend to overcomplicate things for myself. Guess that will go away with practice.
              – skyn37
              8 hours ago


















            • Thank you ! I tend to overcomplicate things for myself. Guess that will go away with practice.
              – skyn37
              8 hours ago
















            Thank you ! I tend to overcomplicate things for myself. Guess that will go away with practice.
            – skyn37
            8 hours ago




            Thank you ! I tend to overcomplicate things for myself. Guess that will go away with practice.
            – skyn37
            8 hours ago












            up vote
            0
            down vote













            Skyn37,



            This a great first time GUI setup.
            Only saw a few things I would change to make it easier on yourself.
            I don't see anything wrong with your Function.



            Things that need work:



            1.Line 9 to 14: These are unnecessary as you already started using grid. Yet this is good practice. Just not needed for this program.



            2.Also try to organize your code better. It helps yourself and also others to quickly identify what the code is doing. I made a few tweaks to your code. Organized it a bit, and made a few minor changes. Placed everything using Grid and Tidied up the GUI a bit.



            """Geometry and Title"""
            root.title('Coinflipper')
            root.geometry("300x100")
            root.resizable(False,False)

            """Labels & Text Box"""
            choice = Label(text="How Many Flips: ")
            T = Label(text="Tails: ")
            H = Label(text="Heads: ")
            ent = Entry(root)
            out = Text(width=15, height=1)
            out2 = Text(width=15, height=1)

            """Grid Positions"""
            choice.grid(row=0, column=0, sticky=E)
            T.grid(row=1,column=0,sticky=E)
            H.grid(row=2,column=0,sticky=E)
            ent.grid(row=0, column=1, columnspan=3)
            out.grid(row=1, column=1, columnspan=3)
            out2.grid(row=2, column=1, columnspan=3)

            """Button Text and Position"""
            clickit = Button(text="FLIP THE COIN!!!")
            clickit.grid(row=3,column=1)


            Overall great work!






            share|improve this answer










            New contributor




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






















              up vote
              0
              down vote













              Skyn37,



              This a great first time GUI setup.
              Only saw a few things I would change to make it easier on yourself.
              I don't see anything wrong with your Function.



              Things that need work:



              1.Line 9 to 14: These are unnecessary as you already started using grid. Yet this is good practice. Just not needed for this program.



              2.Also try to organize your code better. It helps yourself and also others to quickly identify what the code is doing. I made a few tweaks to your code. Organized it a bit, and made a few minor changes. Placed everything using Grid and Tidied up the GUI a bit.



              """Geometry and Title"""
              root.title('Coinflipper')
              root.geometry("300x100")
              root.resizable(False,False)

              """Labels & Text Box"""
              choice = Label(text="How Many Flips: ")
              T = Label(text="Tails: ")
              H = Label(text="Heads: ")
              ent = Entry(root)
              out = Text(width=15, height=1)
              out2 = Text(width=15, height=1)

              """Grid Positions"""
              choice.grid(row=0, column=0, sticky=E)
              T.grid(row=1,column=0,sticky=E)
              H.grid(row=2,column=0,sticky=E)
              ent.grid(row=0, column=1, columnspan=3)
              out.grid(row=1, column=1, columnspan=3)
              out2.grid(row=2, column=1, columnspan=3)

              """Button Text and Position"""
              clickit = Button(text="FLIP THE COIN!!!")
              clickit.grid(row=3,column=1)


              Overall great work!






              share|improve this answer










              New contributor




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




















                up vote
                0
                down vote










                up vote
                0
                down vote









                Skyn37,



                This a great first time GUI setup.
                Only saw a few things I would change to make it easier on yourself.
                I don't see anything wrong with your Function.



                Things that need work:



                1.Line 9 to 14: These are unnecessary as you already started using grid. Yet this is good practice. Just not needed for this program.



                2.Also try to organize your code better. It helps yourself and also others to quickly identify what the code is doing. I made a few tweaks to your code. Organized it a bit, and made a few minor changes. Placed everything using Grid and Tidied up the GUI a bit.



                """Geometry and Title"""
                root.title('Coinflipper')
                root.geometry("300x100")
                root.resizable(False,False)

                """Labels & Text Box"""
                choice = Label(text="How Many Flips: ")
                T = Label(text="Tails: ")
                H = Label(text="Heads: ")
                ent = Entry(root)
                out = Text(width=15, height=1)
                out2 = Text(width=15, height=1)

                """Grid Positions"""
                choice.grid(row=0, column=0, sticky=E)
                T.grid(row=1,column=0,sticky=E)
                H.grid(row=2,column=0,sticky=E)
                ent.grid(row=0, column=1, columnspan=3)
                out.grid(row=1, column=1, columnspan=3)
                out2.grid(row=2, column=1, columnspan=3)

                """Button Text and Position"""
                clickit = Button(text="FLIP THE COIN!!!")
                clickit.grid(row=3,column=1)


                Overall great work!






                share|improve this answer










                New contributor




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









                Skyn37,



                This a great first time GUI setup.
                Only saw a few things I would change to make it easier on yourself.
                I don't see anything wrong with your Function.



                Things that need work:



                1.Line 9 to 14: These are unnecessary as you already started using grid. Yet this is good practice. Just not needed for this program.



                2.Also try to organize your code better. It helps yourself and also others to quickly identify what the code is doing. I made a few tweaks to your code. Organized it a bit, and made a few minor changes. Placed everything using Grid and Tidied up the GUI a bit.



                """Geometry and Title"""
                root.title('Coinflipper')
                root.geometry("300x100")
                root.resizable(False,False)

                """Labels & Text Box"""
                choice = Label(text="How Many Flips: ")
                T = Label(text="Tails: ")
                H = Label(text="Heads: ")
                ent = Entry(root)
                out = Text(width=15, height=1)
                out2 = Text(width=15, height=1)

                """Grid Positions"""
                choice.grid(row=0, column=0, sticky=E)
                T.grid(row=1,column=0,sticky=E)
                H.grid(row=2,column=0,sticky=E)
                ent.grid(row=0, column=1, columnspan=3)
                out.grid(row=1, column=1, columnspan=3)
                out2.grid(row=2, column=1, columnspan=3)

                """Button Text and Position"""
                clickit = Button(text="FLIP THE COIN!!!")
                clickit.grid(row=3,column=1)


                Overall great work!







                share|improve this answer










                New contributor




                Alex Cosmo 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 answer



                share|improve this answer








                edited yesterday





















                New contributor




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









                answered yesterday









                Alex Cosmo

                215




                215




                New contributor




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





                New contributor





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






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






















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










                     

                    draft saved


                    draft discarded


















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













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












                    skyn37 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%2fcodereview.stackexchange.com%2fquestions%2f208358%2fpython-coin-flipper-with-gui%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

                    Quarter-circle Tiles

                    build a pushdown automaton that recognizes the reverse language of a given pushdown automaton?

                    Mont Emei