▶️ Watch Entire Tkinter Playlist ✅ Subscribe To My RUclips Channel: bit.ly/2UFLKgj bit.ly/2IGzvOR ▶️ See More At: ✅ Join My Facebook Group: Codemy.com bit.ly/2GFmOBz ▶️ Learn to Code at Codemy.com ✅ Buy a Codemy T-Shirt! Take $30 off with coupon code: youtube1 bit.ly/2VC9WUN
Learning so much. Your down to earth manner ( including non editing out of occasional mistakes ) and good humour makes it all the more enjoyable. So big thanks!
I took this calculator making as a challenge. And before watching you, I successfully made it. I grabbed the input as a string using get(). Like "2+6*7" or whatever.. and then using eval(), I calculated the result. That was a little smart calculator 😊... All Thanks To Your Lovely Tutorials.
Thank you for providing such videos for 'free'. Loved how you taught us to build the fully functional calculator! But there is are some problems that you might face while using the calculator. You can't perform calculations on floats. And if you divide something by zero it will give you an error. This is how you can solve both of these problems- 1. Just change int into float. 2. You can put the divide function into a try block and perform exception handing on it. Hope this helped you
John, wanted to say ... keep up the good work. Short, sweet, simple ... always a winning formula. This is my first Python GUI effort and I'm glad I took a look. I can already see how to build some simple apps for "admin" type tasks. I haven't looked ahead, but I'm hoping you show us how to package this up for distro. I'm a data engineer so my GUI dev skills are a bit weak. In any case, thanks.
Hey Mike, glad you're enjoying it. I haven't made a video to show how to package it all up and make a distributible file, but I plan on doing that soon.
Great explanation and gave me a few ideas for my own applications. I would suggest, though, that all the repeated code within the button_add, button_subtract, etc. functions be merged into another function to avoid duplication. All you need to do is set the global math in each of them and then hand off to the common function. Thanks for your efforts in explaining Python.
Hi Sir, your work is great and specifically this course is very good and i have been learning tkinter here only. There is a suggestion that you might want to entertain: if you would stay more confident and less doubtful in your codes, that would lead to the students also being confident in your work. Thank You
I prefer the honesty. It's good to know when your teacher is sure of something or when they are just 'riffing'. In the case of the latter, it's really instructive to hear them go through their thought process, just as JE does in these videos.
Great tutorial! It really helped a lot, especially since I'm an absolute beginner. I noticed a small problem: if the user clicks the equal button before doing anything else the program gives an error since we haven't defined this eventuality in the button_equal function and it doesn't recognize the variable 'math'. I solved this by creating another global variable called 'math' at the very first lines of the whole program and gave it the value 0 (it could be any value) so that, if the equal button is pressed with no reason nothing happens and the program doesn't crash. I know there wouldn't be any reason to just randomly click the equal button but it still is a possibily that the users does that so I figured this is a good way to prevent everything from crashing :)
@@udhayakumar-zt2dv Before of all the button functions (basically at the very top of the program right after the import and the lines of code that create a window in tkinter) I wrote these lines: "global math math = 0" and then I modified every if statement in the button_equal() function by adding "math = 0" in each body to reset the value of the variable again after each calculation is executed so that, in case the user clicks the equal button before they have inserted numbers at any time, the program doesn't crash. I also realised the crash happens if the operands buttons are clicked before inserting numbers so I fixed that as well by creating another global variable right under the global math one like that "global isclicked isclicked = 0". When a number button is clicked by the user, the button_click() function runs so I added isclicked = 1 in its body and then I added an if statement in every operand function (button_add(), button_divide() etc.) like that "if isclicked != 0:" and then I just indented the rest of the code that is shown in the tutorial so that the computation only takes place if the number buttons are clicked before the operands ones. I then resetted the value of the isclicked variable in the body of the button_equal() function just like I did for the math one so I wrote "isclicked = 0". Hope this helps :)
great tutorials, now am trying to execute all your tkinter projects and i had some issues with the int(f_number) whenever the answer is converted to a float. i decided to use float instead and it works well.. Thanks ones again.
Thank you for your video... I literally have a school project I need to submit tomorrow and your video has helped a lot. Thanks💚 I also smashed the like button :)
Now that's what I call a quality work! Thank you so much, John, I am very new to your channel, but I am enjoying it so much! Already learnt a lot of stuff about GUI through your videos, and I have just started! Keep up the good job, sir! P.S. I was also wondering if there is a way to store a previous operation in a memory by means of consecutive "+" button clicking or smth similar (without clicking "=")? Say for example, I type 2, then +, then 3, then again +, then 4: so that I could get 9 instead of 7. I am not that good with algorythms, however I am learning. Thank you in advance, John!
I finally made it but i want to know how to color buttons when we click on them and when they are not clicked also how to color the text please make a video if you haven't or please share the link of video if you've made because its very difficult to find a video from a group of 202 videos. Thank you
Before you I watched this video, I attempted to accomplish this via my own problem solving skills. I literally attempted the exact same strategy, except instead of using a string variable, I used a boolean, so instead of math='addition', I did addition=True. I cant wrap my head around why it wont work, I'm sure there is something weird going on under the hood. Did I possibly just code something wrong using this strategy? or if you try this exact same method using Booleans, it causes some type of error?
Hello from Croatia - 🇭🇷 First, I just want to say that I love your videos. I think that your explaining skills are a great. Second - I have a question : I built my calculator and everything works perfect but I want to know how the Entry widget recognizes "123" as one number and not as three numbers - "1" , "2" , "3". Is that just how it works or what ? Because we don't need to code anything for it to do that.
As we're storing those newly entered values to a variables that into a variable....Nd thus if u enter a "2" after a "1" it becomes 12....nd the interpreter as default takes the whole input for further processing. Hope it satisfies:)
Very nice video keep up the good work . I have a question however . How to subtract or divide or... many numbers ? Like 1+4+8+4 without clicking equal button . Any suggestion ?
thanks dude for the lesson dude! but i got a problem with the math variable, it prevent me from using function from math directory. maybe i should change that with another word
Your coding videos are simply the best! But I have one question: is it possible to place a button for two rows (vertically)? I'm trying to put an exit button vertically, like for both rows 5 and 6, for the column 0, but it doesn't work? There are buttons on both rows 5 and 6 and on columns 1 and 2. (sorry for the confusing explanation)
@@Codemycom Well. Photo Image works with PNG and I thought that it was the problem that makes everybody uses pillow. The thing is I was not able to build using pyinstaller + PIL or pillow, so I use a internal tkinter function instead of use another external module. But if it has some problem, pls tel me. I dont know what kind of trouble that function could cause.
I was wondering if its right to have the same identifier for both a button object and a function e.g button_equal = Button(...), also def button_equal(): .... You have the same thing for button_add, button_subtract etc.
thanks man, that was great but there is only one problem, when I for example add 2 + 3 it equals 5 and that's nice, but when the process is done and i kept pressing the equal button it will keep adding numbers by itself. will be grateful if you told me why is that and how to fix it
Hi John I have been playing around with creation of buttons and trying to insert new functions, but failed in the Square Root thing HAHA. I - from math import * and the .sqrt functions seems to be fine to use. however I can't make it work. any tips ? I appreciate your work. I have been learning alot. thanks
can you please tell me what happens in the following lines: def button_click(number): current = e.get() e.delete(0, END) e.insert(0, str(current) + str(number)) My thinking is when I press the number 5 it will store it in "current" variable then insert str(current) + str(number) . Here both current, number has the same indentity (i.e. 5) . So shouldnt we get 55 by pressing the button once?
How can I make the calculator in a way where after you click equals, the first thing you type in AFTER that removes the answer to the previous problem, instead of always having to click clear afterwards?
When I tried to add, subtract, divide, or multiply the answer from a division answer that was a decimal, I would get an error. I changed all the int to float and now its all fine.
Hey man. Been trying to create an Ans button like on Casio scientific calculators where any time you press '=', you store the value in an Answer variable that can be recalled by the button. How would I port it over to another function?
Hi I've been following this with a few experiments from my side as well. I was trying to make another class which inherited the existing button class. The intention was you have certain common settings for all the buttons. I was thinking of click function as well in the class which would take the text of the button and put it in the entry box. Could you please tell what could be the syntax for the command. I tried putting (self).click, as mentioned in some link. But it doesn't seem to work. I would have to pass the word self to the function click in order to make it work which is not accepted as "self" isn't getting recognised.
Tkinter itself uses "mixin" classes to "internalize" and handle the requests, but when you create your button class it does not inherit from tkinter superclass and hence self won't be recognised when you try to pass it to a button class inherited from tkinter base class.
Does anyone happen to know why *global f_num* and *global math* are returning *is not defined in the global scope* errors? I followed the tutorial step-by-step but always end up with the same error. FYSA: My calculator works with the errors, but don't know why.
Thanks for the tutorial. I would like to ask a question. Instead of using the (global f_num and global math) as a global variable inside each function, why can't we have this outside the function? because it is a global variable right ? just had this doubt. pls, clarify me. It would be great.
For some reason my program registers when I want to add numbers, but it doesn't register the other operations (* / -) and just deletes whatever is in the data entry box.
I did exactly same coding with yours. But I keep getting this error [AttributeError: 'Button' object has no attribute 'gird'] I did googling but I can't figure out what is problem. Can you help me?
I have a problem with this line it stile say to me something wrong in this line Button_1=Button(root, text="1", padx=40, pady=20, command=Lambda: Button_click(1))
Please help me sir!!! I made calculator of my own but when i am using int with get() as you have done, then i am getting the following error invalid literal for int with base 10 but your works fine with it.. Please help
Sir I got my mistake . My mistake for that while creating buttons I wrote text="5" and because of this I was not able to convert it to int type but now it's fixed😂😂😂
Can I ask you a question? I want to make square root button work, but every time when I make a function and when I press the button, it doesn't work. Can you tell me why?
3 test cases were not passing like 2+3+4= it fails and if we click2+ and then hit clear the enter 3= it gives 5 and 2= also fails !! can anyone suggest how to rectify those
I actually created the calculator so that each number with the operators are displayed and a code reads the whole string and solves it and gives the answer.
hey can anyone help me with printing exceptions the entry widget...like when u divide by zero,u get nothing so i wanna print out cannot divide by zero....any ideas how??
That was the first thing i did but the output msg is not printing...like if i say, if math=="division" and second number ==0 : (at this step i tried, e.insert, print, but it is blank...i will try again and notify..)
Hi i want to make this calculator ready for use to user , when he need to use this calculator i want him just clique on a file or something and this calculator show up
Codemy prices have gone up substantially since this recording. The $27 mentioned (with discount) only covers ONE course ($29 actually), not ALL the courses as stated in the video. I am not saying the new price is not worth it, but it's an investment for me I don't want to pay that for just a single course either.
Hello Codemy, with this code i don't understand why it it is duplicating my answer eg if I say 2+3 answer is supposed to be 5 but mine is saying 55.Please assist me or anyone who knows what my problem is?
▶️ Watch Entire Tkinter Playlist ✅ Subscribe To My RUclips Channel:
bit.ly/2UFLKgj bit.ly/2IGzvOR
▶️ See More At: ✅ Join My Facebook Group:
Codemy.com bit.ly/2GFmOBz
▶️ Learn to Code at Codemy.com ✅ Buy a Codemy T-Shirt!
Take $30 off with coupon code: youtube1 bit.ly/2VC9WUN
Learning so much. Your down to earth manner ( including non editing out of occasional mistakes ) and good humour makes it all the more enjoyable. So big thanks!
Thanks Gaven, glad you're digging it!
I took this calculator making as a challenge. And before watching you, I successfully made it.
I grabbed the input as a string using get(). Like "2+6*7" or whatever.. and then using eval(), I calculated the result. That was a little smart calculator 😊... All Thanks To Your Lovely Tutorials.
Nice!
yea did it with same logic, one line calculator kind
Thank you for providing such videos for 'free'.
Loved how you taught us to build the fully functional calculator!
But there is are some problems that you might face while using the calculator.
You can't perform calculations on floats.
And if you divide something by zero it will give you an error.
This is how you can solve both of these problems-
1. Just change int into float.
2. You can put the divide function into a try block and perform exception handing on it.
Hope this helped you
how about using float instead of integer as data type and also introducing a decimal point. ?
I tired smashing the like button but ended up breaking my laptop screen. Now I can't code anything.
Joking aside, loved the super helpful tutorial!
hahahah thanks!
Man you are insane!!!!
Hey , can you believe it I developed my own GUI calculator.!!!
Awesome, congratulations!
Thanks ...all makes sense ..no classes ..great.Easy conversion for Python 2 or 3
John, wanted to say ... keep up the good work. Short, sweet, simple ... always a winning formula. This is my first Python GUI effort and I'm glad I took a look. I can already see how to build some simple apps for "admin" type tasks. I haven't looked ahead, but I'm hoping you show us how to package this up for distro. I'm a data engineer so my GUI dev skills are a bit weak. In any case, thanks.
Hey Mike, glad you're enjoying it. I haven't made a video to show how to package it all up and make a distributible file, but I plan on doing that soon.
Hey thank you for such helpful and earnest videos. You've been of great assistance in starting to build my logic in using the tkinter module
Glad you enjoyed it!
Best video course on python. super easy to follow and understand
Awesome! Thanks! Glad you're enjoying it!
Olá, sou Brasileiro, estou começando na linguagem Python, estou gostando muito da sua didática, quero aprender mais, parabéns.
Thanks, glad you're enjoying them.
you are the best teacher in the world
Thanks!
Great explanation and gave me a few ideas for my own applications. I would suggest, though, that all the repeated code within the button_add, button_subtract, etc. functions be merged into another function to avoid duplication. All you need to do is set the global math in each of them and then hand off to the common function.
Thanks for your efforts in explaining Python.
Sure..but for purposes of teaching concepts, I like to keep code as explicit as possible.
Hi Sir, your work is great and specifically this course is very good and i have been learning tkinter here only.
There is a suggestion that you might want to entertain: if you would stay more confident and less doubtful in your codes, that would lead to the students also being confident in your work.
Thank You
lol
I prefer the honesty. It's good to know when your teacher is sure of something or when they are just 'riffing'. In the case of the latter, it's really instructive to hear them go through their thought process, just as JE does in these videos.
Totally binge watching these right now. Please don't tell everyone how much of a nerd I am...
ha, awesome!
Great tutorial! It really helped a lot, especially since I'm an absolute beginner. I noticed a small problem: if the user clicks the equal button before doing anything else the program gives an error since we haven't defined this eventuality in the button_equal function and it doesn't recognize the variable 'math'. I solved this by creating another global variable called 'math' at the very first lines of the whole program and gave it the value 0 (it could be any value) so that, if the equal button is pressed with no reason nothing happens and the program doesn't crash. I know there wouldn't be any reason to just randomly click the equal button but it still is a possibily that the users does that so I figured this is a good way to prevent everything from crashing :)
Good idea!
I tried to implement what you said. but couln't get it. Can you provide me, what have you exactly implemneted?
@@udhayakumar-zt2dv Before of all the button functions (basically at the very top of the program right after the import and the lines of code that create a window in tkinter) I wrote these lines: "global math
math = 0" and then I modified every if statement in the button_equal() function by adding "math = 0" in each body to reset the value of the variable again after each calculation is executed so that, in case the user clicks the equal button before they have inserted numbers at any time, the program doesn't crash. I also realised the crash happens if the operands buttons are clicked before inserting numbers so I fixed that as well by creating another global variable right under the global math one like that "global isclicked
isclicked = 0". When a number button is clicked by the user, the button_click() function runs so I added isclicked = 1 in its body and then I added an if statement in every operand function (button_add(), button_divide() etc.) like that "if isclicked != 0:" and then I just indented the rest of the code that is shown in the tutorial so that the computation only takes place if the number buttons are clicked before the operands ones. I then resetted the value of the isclicked variable in the body of the button_equal() function just like I did for the math one so I wrote "isclicked = 0". Hope this helps :)
@@udhayakumar-zt2dv Here is the Repl link if you want to have a closer look repl.it/@ilevinci/Simple-calculator
great tutorials, now am trying to execute all your tkinter projects and i had some issues with the int(f_number) whenever the answer is converted to a float. i decided to use float instead and it works well.. Thanks ones again.
Glad you're enjoying the videos :-)
Awesome tutorial!! Thank you for being so helpful. I finally got it all hatched out.
Glad to hear it
Thank you for your video... I literally have a school project I need to submit tomorrow and your video has helped a lot. Thanks💚
I also smashed the like button :)
Thanks! Good luck with your project!
im chain whatching this tutorial. Its amazing. Thank you for your help
Like button smashed and subscribed. - What a great tutorial!
Beautifully explained. Learning and enjoying alot! Thanks!
Great to hear!
You are simply great...
Thanks!
great tutorials...but for this one i have a question..cant we define global variable math once and use it thorughout in various functions?
Gracias profe, excelente trabajo.
Welcome :-)
just made a calculator thanks sir !!
Great job!
Thanks man , this is the first app i've ever built thanks to you. One Subcriber more!!
Glad you liked it!
watch this with 2x speed , still you can understand. cool and fast !
whatever floats your boat lol
Now that's what I call a quality work! Thank you so much, John, I am very new to your channel, but I am enjoying it so much! Already learnt a lot of stuff about GUI through your videos, and I have just started! Keep up the good job, sir!
P.S. I was also wondering if there is a way to store a previous operation in a memory by means of consecutive "+" button clicking or smth similar (without clicking "=")? Say for example, I type 2, then +, then 3, then again +, then 4: so that I could get 9 instead of 7.
I am not that good with algorythms, however I am learning. Thank you in advance, John!
Glad you're enjoying the videos! Sure you could assign them to variables if you want to keep track of them.
മച്ചാൻ പൊളി 😍
:-)
I finally made it but i want to know how to color buttons when we click on them and when they are not clicked also how to color the text please make a video if you haven't or please share the link of video if you've made because its very difficult to find a video from a group of 202 videos.
Thank you
sir you are awesome your tutorials are sooo good.
Thanks!
Thank you so much for this tutorial it taught me a lot
So glad you enjoyed it! Thanks for watching!
the tutorial is greater than great!
Thanks!
Before you I watched this video, I attempted to accomplish this via my own problem solving skills. I literally attempted the exact same strategy, except instead of using a string variable, I used a boolean, so instead of math='addition', I did addition=True. I cant wrap my head around why it wont work, I'm sure there is something weird going on under the hood. Did I possibly just code something wrong using this strategy? or if you try this exact same method using Booleans, it causes some type of error?
Who knows, maybe there was just a typo in your code or something.
Hello from Croatia - 🇭🇷
First, I just want to say that
I love your videos. I think that your explaining skills are a great.
Second - I have a question :
I built my calculator and everything works perfect but I want to know how the Entry widget recognizes "123" as one number and not as three numbers - "1" , "2" , "3".
Is that just how it works or what ? Because we don't need to code anything for it to do that.
As we're storing those newly entered values to a variables that into a variable....Nd thus if u enter a "2" after a "1" it becomes 12....nd the interpreter as default takes the whole input for further processing.
Hope it satisfies:)
@@shivambhatt5856 Thanks you so much for the answer. It's going to help me with my project.
@@karlobucic4412 My pleasure!
Btw All The Best for your project! ;)
Thanks for the tutorial. It was great.
Glad it was helpful!
Thanks a lot!!, I've successfully made it
Great job!
this video helped me a lot, thank you sir.
Glad you liked it!
Very nice video keep up the good work . I have a question however . How to subtract or divide or... many numbers ? Like 1+4+8+4 without clicking equal button . Any suggestion ?
Great work buddy
Thanks
Hi, i suggest use eval function for less the code. Thanks for you teach me
Sorry, I don't have a video on that
nice explaination
Thanks
Thank you so much!
Thanks for watching!
Is there any way to input decimal digits in this calculator?
I am really grateful for this tutorial but it could have been easier
simply AWESOME:)
I appreciate that!
stupendous!!
thanks!
thanks dude for the lesson dude!
but i got a problem with the math variable, it prevent me from using function from math directory.
maybe i should change that with another word
There might be an error in your code.
I had the same experience. I changed ‘math’ to ‘art’ and the code worked.
when i try to run the program it keeps saying first_number is not defined. I don't know what I'm doing wrong here
You need to define first_number :-p
Thank you
Welcome
you are so good
Thanks!
Your coding videos are simply the best! But I have one question: is it possible to place a button for two rows (vertically)? I'm trying to put an exit button vertically, like for both rows 5 and 6, for the column 0, but it doesn't work? There are buttons on both rows 5 and 6 and on columns 1 and 2. (sorry for the confusing explanation)
use columnspan=2 or rowspan=2 depending on which direction you want to span
@@Codemycom thanks a ton! It didn't even come up to my mind that something like rowspan exists. I'm such an idiot :D
@@tontsa28 That's why I'm here :-)
The internal command PhotoImage works fine for me using png file. I cound not compile with PIL using pyinstaller, so I tried PhotoImage.
Pyinstaller? Why would you do that? Just pip install Pillow
@@Codemycom to build the code.
@@Codemycom Well. Photo Image works with PNG and I thought that it was the problem that makes everybody uses pillow. The thing is I was not able to build using pyinstaller + PIL or pillow, so I use a internal tkinter function instead of use another external module. But if it has some problem, pls tel me. I dont know what kind of trouble that function could cause.
@@raphaelmonteiro4833 You don't have to build anything. Just pip install Pillow from the terminal
I was wondering if its right to have the same identifier for both a button object and a function e.g button_equal = Button(...), also def button_equal(): .... You have the same thing for button_add, button_subtract etc.
probably not a great idea
thanks man, that was great but there is only one problem, when I for example add 2 + 3 it equals 5 and that's nice, but when the process is done and i kept pressing the equal button it will keep adding numbers by itself. will be grateful if you told me why is that and how to fix it
Hi John
I have been playing around with creation of buttons and trying to insert new functions, but failed in the Square Root thing HAHA. I - from math import * and the .sqrt functions seems to be fine to use. however I can't make it work. any tips ? I appreciate your work. I have been learning alot.
thanks
I'm not sure what you're asking about, but this will work:
from math import *
print (sqrt(16))
Thanks man
No problem
Thanksss😍♥
Welcome!
Do we have any GitHub repo link to see the code ?
github.com/flatplanet/Intro-To-TKinter-RUclips-Course
How should I define point button for example if I want to write 5.25 * 70.56789 ?
Just use floats instead of ints
Hello John..... I tried to edit the calculator...and after that in the main output, All the buttons are faraway from each other:
Code:
from tkinter import *
root = Tk()
root.title('CALC')
e=Entry(root, font=('arial',20,'bold'), width=35, borderwidth=30 , insertwidth=4, bg='powder blue', justify='right')
e.grid(columnspan=4)
def button_clk(number):
# e.delete(0, END)
current = e.get()
e.delete(0, END)
e.insert(0,str(current)+str(number))
def button_clear():
e.delete(0, END)
def button_add():
first_number=e.get()
global f_num
global math
math="addition"
f_num = int(first_number)
e.delete(0, END)
def button_equal():
second_number=e.get()
e.delete(0,END)
if math =="addition":
e.insert(0, f_num + int(second_number))
if math =="subtraction":
e.insert(0, f_num - int(second_number))
if math =="multiplication":
e.insert(0, f_num * int(second_number))
if math =="division":
e.insert(0, f_num / int(second_number))
def button_subtract():
first_number = e.get()
global f_num
global math
math = "subtraction"
f_num = int(first_number)
e.delete(0, END)
def button_multiply():
first_number = e.get()
global f_num
global math
math = "multiplication"
f_num = int(first_number)
e.delete(0, END)
def button_divide():
first_number = e.get()
global f_num
global math
math = "division"
f_num = int(first_number)
e.delete(0, END)
#Define the buttons
button_1 = Button(root, text="1",font=('arial',20,'bold'),bd=8, fg='black', bg='powder blue',padx=16,pady=16,command=lambda:button_clk(1))
button_2 = Button(root, text="2",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=lambda:button_clk(2))
button_3 = Button(root, text="3",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=lambda:button_clk(3))
button_4 = Button(root, text="4",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=lambda:button_clk(4))
button_5 = Button(root, text="5",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=lambda:button_clk(5))
button_6 = Button(root, text="6",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=lambda:button_clk(6))
button_7 = Button(root, text="7",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=lambda:button_clk(7))
button_8 = Button(root, text="8",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=lambda:button_clk(8))
button_9 = Button(root, text="9",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=lambda:button_clk(9))
button_0 = Button(root, text="0",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=lambda:button_clk(0))
button_add= Button(root, text="+",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=button_add)
button_equal = Button(root, text="=",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=button_equal)
button_clear = Button(root, text="C",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=button_clear)
button_subtract= Button(root, text="-",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=button_subtract)
button_multiply= Button(root, text="x",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=button_multiply)
button_divide= Button(root, text="/",font=('arial',20,'bold'),bd=8,fg='black',bg='powder blue',padx=16,pady=16,command=button_divide)
#Put the buttons on the screen
button_1.grid(row= 3, column=0)
button_2.grid(row= 3, column=1)
button_3.grid(row= 3, column=2)
button_multiply.grid(row=3,column=3)
button_4.grid(row= 2, column=0)
button_5.grid(row= 2, column=1)
button_6.grid(row= 2, column=2)
button_subtract.grid(row=2, column=3)
button_7.grid(row=1 , column=0)
button_8.grid(row=1 , column=1)
button_9.grid(row=1 , column=2)
button_add.grid(row=1,column=3)
button_0.grid(row=4, column=0)
button_clear.grid(row=4,column=1)
button_equal.grid(row=4,column=2)
button_divide.grid(row=4,column=3)
root.mainloop()
you gave them padx and pady's of 16 each
awesome!
Thanks!
How do i add comma's in the input like a extra button ',' and make it work?
Sorry, not sure what you mean
Hi Dear John.İn this calculator result for example 10/2+6 or 21*2+5 not correctly.Please give me answer:)Thanks
can you please tell me what happens in the following lines:
def button_click(number):
current = e.get()
e.delete(0, END)
e.insert(0, str(current) + str(number))
My thinking is when I press the number 5 it will store it in "current" variable then insert str(current) + str(number) . Here both current, number has the same indentity (i.e. 5) . So shouldnt we get 55 by pressing the button once?
sounds right...run the code and see for yourself
how to make numbers appear on right side like as in real calculators ?
real calculators?
e = Entry(root, justify=RIGHT)
by using justify=RIGHT the numbers will appear on right side
How can I make the calculator in a way where after you click equals, the first thing you type in AFTER that removes the answer to the previous problem, instead of always having to click clear afterwards?
When I tried to add, subtract, divide, or multiply the answer from a division answer that was a decimal, I would get an error. I changed all the int to float and now its all fine.
yep
Thanks man you really helped
Hey man. Been trying to create an Ans button like on Casio scientific calculators where any time you press '=', you store the value in an Answer variable that can be recalled by the button. How would I port it over to another function?
Any time you store anything in a variable you can send it to another function in the normal way; function(variable)
Hi I've been following this with a few experiments from my side as well. I was trying to make another class which inherited the existing button class. The intention was you have certain common settings for all the buttons. I was thinking of click function as well in the class which would take the text of the button and put it in the entry box. Could you please tell what could be the syntax for the command. I tried putting
(self).click, as mentioned in some link. But it doesn't seem to work. I would have to pass the word self to the function click in order to make it work which is not accepted as "self" isn't getting recognised.
Sorry, not sure what you mean
Tkinter itself uses "mixin" classes to "internalize" and handle the requests, but when you create your button class it does not inherit from tkinter superclass and hence self won't be recognised when you try to pass it to a button class inherited from tkinter base class.
great tutorials
Thanks! Glad you like them.
Can we add Circle buttons instead of Square ?
Yes, I have videos on that in the playlist
@@Codemycom ooh, thanks for the reply.👍
And how can we do when we divide a number by zero?
Does anyone happen to know why *global f_num* and *global math* are returning *is not defined in the global scope* errors? I followed the tutorial step-by-step but always end up with the same error. FYSA: My calculator works with the errors, but don't know why.
nice..
Thanks
Thanks for the tutorial. I would like to ask a question. Instead of using the (global f_num and global math) as a global variable inside each function, why can't we have this outside the function? because it is a global variable right ? just had this doubt. pls, clarify me. It would be great.
Try it and see. There are always multiple ways of doing things
It not show output by declaring variable outside the function...
What about your code?
@@princegupta8022 Sorry, I don't know what you mean
@@Codemycom when I declare variables globally like this
Math =StringVar()
f_num = IntVar()
Calculator not give any output?
@@princegupta8022 Global variables have to be declared global within the function. Otherwise python recognizes it as another variable.
Sir I need a code to add factorial button in calculator... Plzz help... I tried so many times
it would be better if you have used "eval" function
but i was the best tutorial
better is relative :-p
Thanks Calvirris
uh huh
great model, but i am confused on adding functions like square root in this program
Confused how?
@@Codemycom what should be the logic for it...I do it with math function sqrt, but I get an error called sqrt is not declared
@@vishalkumaresan8420 You need to import math:
import math
math.sqrt(12)
where 12 is whatever you want to calculate
For some reason my program registers when I want to add numbers, but it doesn't register the other operations (* / -) and just deletes whatever is in the data entry box.
Very weird...
I did exactly same coding with yours. But I keep getting this error [AttributeError: 'Button' object has no attribute 'gird'] I did googling but I can't figure out what is problem. Can you help me?
You misspelled grid, you spelled it gird.
I have a problem with this line it stile say to me something wrong in this line
Button_1=Button(root, text="1", padx=40, pady=20, command=Lambda: Button_click(1))
Lambda should not be capitalized.
Please help me sir!!! I made calculator of my own but when i am using int with get() as you have done, then i am getting the following error invalid literal for int with base 10 but your works fine with it.. Please help
Check your code for typos. It has to be exact
Sir I got my mistake . My mistake for that while creating buttons I wrote text="5" and because of this I was not able to convert it to int type but now it's fixed😂😂😂
@@tapeshvashisth7726 Glad you figured it out :-)
super
Thanks
Can I ask you a question? I want to make square root button work, but every time when I make a function and when I press the button, it doesn't work.
Can you tell me why?
Not without seeing your code
3 test cases were not passing like 2+3+4= it fails and if we click2+ and then hit clear the enter 3= it gives 5 and 2= also fails !!
can anyone suggest how to rectify those
My program isnt working right, the subtract button isnt showing up?
Check your code for typos..it has to be exact
While running the code , The columns are showing gap in between eachother
What did you do differently from the video?
Hai!! i am getting error near def button_substract(): return. What to do to rectify?
What's the whole error?
@@Codemycom unindent doesn't match
@@arunbeckham8384 Indentation has to be exactly as I do in the video.
Why don't you use an IDE instead of using both text editor and terminal
Still the videos are fruitful
@@farookk4744 Because this way is easy for beginners and it's free. Everyone has access to these tools with no need to learn a complicated IDE.
I actually created the calculator so that each number with the operators are displayed and a code reads the whole string and solves it and gives the answer.
Nice!
one thing i noticed is you keep repeating code
like cant we inherit and use functions such as eval() instead the if statement
of course you can do whatever you want. I repeat code to be explicit as I can so people easily learn.
hey can anyone help me with printing exceptions the entry widget...like when u divide by zero,u get nothing so i wanna print out cannot divide by zero....any ideas how??
Use an if statement to determine if they are trying to divide by zero, and IF so, output your message.
That was the first thing i did but the output msg is not printing...like if i say,
if math=="division" and second number ==0 :
(at this step i tried, e.insert, print, but it is blank...i will try again and notify..)
Hi i want to make this calculator ready for use to user , when he need to use this calculator i want him just clique on a file or something and this calculator show up
I have a video in this playlist that shows you how to create an executable exe file.
Codemy prices have gone up substantially since this recording. The $27 mentioned (with discount) only covers ONE course ($29 actually), not ALL the courses as stated in the video. I am not saying the new price is not worth it, but it's an investment for me I don't want to pay that for just a single course either.
Hello Codemy, with this code i don't understand why it it is duplicating my answer eg if I say 2+3 answer is supposed to be 5 but mine is saying 55.Please assist me or anyone who knows what my problem is?
rewatch the video, I address that
How can I include cancel button
I have videos on buttons all over the playlist
How do i make the decimal button (" . ") work?
?
@@Codemycom like how do I get to add 1.1 + 1.2
@@ritishanand2668 Create a '.' button and concatenate...I don't cover this in the videos but it couldn't be hard. Give it a try..
also you have to limit the number of times one can click on the decimal button as it can't be used more than once for an input
@@sarthaksrivastava6282 Good point