Calculator with GUI Using Python Tkinter (Less Than 200 lines of Code)

  Рет қаралды 149,755

Programiz

Programiz

Күн бұрын

Python project-based learning videos for absolute beginners!
We frequently use built-in programs like calculators without thinking about how they were designed or what's underneath the hood. It's essential for you to think about these things if you want to become a better software developer. The end goal of learning to program is to solve real-world problems and the best way to do so is by working on projects and putting your knowledge to use.
So, in this video, Soyuj demonstrates one such project that can help beginners get started with building projects in Python. By the end of this video, you will learn how to build your own calculator app in less than 200 lines of Python code. Not only that, you will learn to add advanced features like making the calculator usable from the keyboard and creating its executable file.
For this tutorial, we will use the built-in Tkinter module and take inspiration from the standard Windows Calculator App. Remember that the main takeaway from this video should not be just to build a calculator in Python but also to learn things that are often overlooked like how to structure your project and write clean readable Python code.
~
To follow along with this tutorial, you need to have a basic understanding of Python. For that, you can check our resources:
Python for Beginners (KZbin Playlist): • Python for Beginners
Learn Python Programming (Text-based Tutorials): www.programiz.com/python-prog...
Learn Python App (iOS and Android):
Download Link for Android: bit.ly/learn-python-android
Download Link for iOS: apple.co/3iPm6Sx
~
Links Mentioned in the Video:
Python Object-Oriented Programming Playlist: • Python OOP Tutorials
Pycharm IDE: www.jetbrains.com/pycharm/
Source Code in this Video: github.com/programiz/Calculator
~
Timestamps:
0:00 Intro
0:16 Final Calculator Preview
1:45 Building the Calculator
6:04 Creating the Frames
8:40 Adding the Display Labels
13:05 Adding the Digit Buttons
17:25 Adding the Operator Buttons
24:35 Adding Functionality to the Buttons
32:41 Enhancements to the Calculator
33:36 Adding Square and Square Root Buttons
36:50 Changing the Operator Symbols
37:55 Truncating the Results
38:21 Handling Exceptions like ZeroDivisionError
39:13 Using Calculator from the Keyboard
41:45 Creating an .exe file of our Calculator
Find Programiz elsewhere:
Facebook: / programiz
Instagram: / _programiz
LinkedIn: / programiz
Website: www.programiz.com
#python #learnprogramming #programiz #pythonproject #projectbasedlearning

Пікірлер: 150
@defnotsg
@defnotsg 2 жыл бұрын
Thank you so much for this amazing video! I really learnt so much things from you and your my favorite youtuber
@Andryux94
@Andryux94 8 ай бұрын
Thanks for your Video and all your explanation, have a good week-end Man!
@Lily-fc5li
@Lily-fc5li 2 жыл бұрын
thank you , I had so much fun while coding!
@vishavjeetsharma5824
@vishavjeetsharma5824 3 жыл бұрын
came here from your website......awesome youtube channel like your website.......keep uploading good stuff like this...thanks
@Alex-fk2ie
@Alex-fk2ie 2 жыл бұрын
Thank you for your tutorial ! It helps me a lot
@adrienmalosse8782
@adrienmalosse8782 Жыл бұрын
Thanks for the tutorial, it helps me a lot, I learnt a lot with this video. You're doing a great job ! I was writing some python code before but never with gui, now I want to learn more from tkinter !!
@jacobzheng8701
@jacobzheng8701 Жыл бұрын
Thank you for making this video!!😀
@SarasaYugantha
@SarasaYugantha 2 жыл бұрын
One of most underrated guys on the youtube you deserve 10mviews for your amazing tutorials....
@graphixig
@graphixig 2 жыл бұрын
10 views?🙄
@SarasaYugantha
@SarasaYugantha 2 жыл бұрын
@@graphixig 10m what i should say my bad
@SarasaYugantha
@SarasaYugantha 2 жыл бұрын
Please make more tutorials with designing programs not only python c++ c# php swift things like plz
@SarasaYugantha
@SarasaYugantha 2 жыл бұрын
i learned python for 3months but your this video literally get to me know python
@marcingarbarczyk7196
@marcingarbarczyk7196 3 жыл бұрын
Good work, i love this channel.
@devadathr6840
@devadathr6840 2 жыл бұрын
Very useful video. Absolutely advanced and short but still highly effective. Expect more contents from you. I'm new to this Object Oriented Programming. So would like to have some lessons from you. Also I request you to make video on a python GUI Dictionary and a GUI Address/Contact Book. It will be so helpful if it's so. 😍😍
@noone8740
@noone8740 2 жыл бұрын
Much better than copying to intense music. Tysm.
@widepootis
@widepootis 2 жыл бұрын
That was a super informative and really nice tutorial to follow along thanks!
@slickwillie3376
@slickwillie3376 2 жыл бұрын
This is a good learning tool. Thx.
@glorysonhorace3265
@glorysonhorace3265 2 жыл бұрын
Am mad at myself for not having met this channel earlier. 😂 Your content is very educative and I really appreciate your work.
@furqanali8408
@furqanali8408 2 жыл бұрын
You were great at explaining
@SL_Beast
@SL_Beast 6 ай бұрын
I literally found this on git while browsing lol it's a cool programme. I have my own calculator code on git but it doesn't have any GUI just basic calculations on a good old terminal
@angelneykov7393
@angelneykov7393 3 жыл бұрын
Thank you, sir!
@alnajm9952
@alnajm9952 2 жыл бұрын
Thank you, sir! 😍😍
@aaryankakad6627
@aaryankakad6627 3 жыл бұрын
Eagerly Waiting...🔥
@tinyfungii
@tinyfungii 3 жыл бұрын
Very cool Soyuz
@oyevicuu
@oyevicuu 3 жыл бұрын
Waiting for it
@hannahpj6002
@hannahpj6002 Жыл бұрын
thank you!
@user-ns7hu2xi5b
@user-ns7hu2xi5b 2 жыл бұрын
Thanks!
@bhuvaneshwarig6517
@bhuvaneshwarig6517 8 ай бұрын
I FOUND IT!!!! THANK U SO MUH JIIII.......
@patriciamaliwanag5381
@patriciamaliwanag5381 2 жыл бұрын
Thank you so much. can you recommend us a package to test the calculator GUI or any vid that can help us write Calculator GUI?
@prerit791
@prerit791 2 жыл бұрын
Dhanyabad dai❤
@Jdeadevil
@Jdeadevil Жыл бұрын
I give up, it's really hard to follow along with this because of how convoluted this is compared to every other Tkinter tutorial I've watched. That would be fine, but I'm about half way through, and I've got this problem I cannot figure out, but I have no chance of figuring this out because all the comments are just "I'm going to do this" which has given me no point of reference. This is like more of a video you'd put in your portfolio to prove you're already a genius.
@genuine0
@genuine0 4 ай бұрын
Trust me, I have been coding for years, and the only way to learn is to get your hands dirty, and sweat and blood, trials and errors, these tutorials are not going to teach you anything, find some website enrol, take few courses and seek projects, and build projects, preferably with a tutor “hence” tutorial. These guys are here to show off, "look what we can do", and believe me, you need to understand the very basics first, and the concepts, all of the functions and methods are secondary, you will learn them in time and nobody knows all the functions, but you need to know what you’re about to create then look for the right tools to build it, but you need to know how to use those tools. That’s all there is to it. Start learning to code, 20 minutes every day and in three months you will learn to do many things all by yourself. My advice is start learning to use python, C++, JavaScript, etc… and using tkinter, kivy will only teach you how to code with tkinter and kivy, and then if you’re forced to use real coding, you will find yourself stranded in the middle of nowhere.
@genuine0
@genuine0 4 ай бұрын
There is no genius, you learn to code like you learn to drive a car, to ride a bike, to play the piano, guitar, or to learn to speak another language the key is practice that’s all, no genius there.
@David-fq5un
@David-fq5un 2 ай бұрын
Yes, it would be nice if he explained more why he is doing things, but I've followed along and it is working. Use your brain and try to think what is happening. Use pencil and paper to go through some of the steps if it helps.
@amirraja7798
@amirraja7798 2 ай бұрын
nice video man
@gonzaloplazag
@gonzaloplazag 2 жыл бұрын
Amazing video! This video deserves 10m like!
@brokenbackisbad9049
@brokenbackisbad9049 2 жыл бұрын
His razer laptop background matches with the programming language he uses
@sahasict9887
@sahasict9887 2 жыл бұрын
thanks thanks thanks good luck
@riyashrestha3483
@riyashrestha3483 3 жыл бұрын
NICE
@aandresriera7927
@aandresriera7927 2 жыл бұрын
great great video
@nunomeira3850
@nunomeira3850 2 жыл бұрын
Nice tutorial! help me a lot to learn more. Im starting my journey in python and this challenge is very good. But can I ask you a basic thing? Instead of having all the functions in the main .py can we divide them in different scripts and them import to the main or it has to be all in the same? Thanks
@Mr-Yuki
@Mr-Yuki 2 жыл бұрын
You can. And then you can import them using the import at the top of your script. Look up how import works and you'll learn how easy it is
@ezikell
@ezikell 2 жыл бұрын
Thank you for this amazing video man! I do wanna know if you know how to make an erase button, where I can just remove one number at a time?
@DynamoTuber
@DynamoTuber Жыл бұрын
def click(value): ex = entryField.get() answer = '' try: if value == 'C': #Here c = Clear button (works like a backspace key) ex = ex[0:len(ex) - 1] entryField.delete(0, END) entryField.insert(0, ex) return This will be your command.... now just insert a button using tkinter button command and you are good to go.
@autarroy
@autarroy 2 жыл бұрын
sir can you also make a video while i typing a number in the entry widget the number must separate in thousand for example if i'm typing 1200 it must separate 1,200
@naturebeauty2421
@naturebeauty2421 Жыл бұрын
nice video
@BruceVayne
@BruceVayne 7 ай бұрын
Whats your theme? looks amazing
@David-fq5un
@David-fq5un 2 ай бұрын
Good video overall. Need more explanation why you coded it a certain way or what the code does, not just give the code.
@pushpitsharma1867
@pushpitsharma1867 2 жыл бұрын
thank you ap ne mera school me watt badaha deya
@DevOpsOnSteroids
@DevOpsOnSteroids 3 жыл бұрын
When can i get notes on HTML,CSS,React,DBMS on your website.?
@tomoyaokazaki9915
@tomoyaokazaki9915 3 жыл бұрын
Me to waiting
@lastonline2614
@lastonline2614 3 жыл бұрын
Waiting....
@lurxy-ur7126
@lurxy-ur7126 2 жыл бұрын
There should be a backspace button on the calculator, but how will I make that?
@SunnyGarasia
@SunnyGarasia 2 жыл бұрын
On the output screen which is calculator GUI I can't see the operator symbols other than addition. I can see all the numbers, C, = but can't see other operators which are -,%,*. So can you please help me out with it. I used same syntax that you used.
@howtoanything5542
@howtoanything5542 2 жыл бұрын
Can anyone tell what is the font he is writing the code in
@SRMasood
@SRMasood Жыл бұрын
How will I add the "navigation" button? Where it shows more options to different calculator?
@hshs510
@hshs510 2 жыл бұрын
What theme are you using?
@musaisaac4015
@musaisaac4015 2 жыл бұрын
very interesting tutorial.straight forward steps but i had an issue when adding Functionality to the Buttons,it doesnt display the value when clicked even i corrected this line of code "command=lambda x=digit: self.add_to_expression(x)"
@HudsonLetsPlay
@HudsonLetsPlay Жыл бұрын
Lambda is capital, kinda late but hope it helps lol.
@naturebeauty2421
@naturebeauty2421 Жыл бұрын
but I wanna ask one thing that i am getting error ". calculator has no attribute create_display_frame() so can you tell me it's fix?
@lostsoul2184
@lostsoul2184 9 ай бұрын
question . when I add too much numbers the whole window stretches. how can I prevent that ?
@pawanpal9373
@pawanpal9373 2 жыл бұрын
I am also doing the but it's showing errors because of pack() and grid(), can't use in same class
@trevesgordio8917
@trevesgordio8917 2 жыл бұрын
How to enable backspace in the calculator
@hajarajdid3051
@hajarajdid3051 Жыл бұрын
What if you want to add trigonometrical functions, how do you do that???
@kbimero1
@kbimero1 2 жыл бұрын
Hello greetings from Venezuela, I am learning python and I decided to do this exercise with you. I'm having trouble using the calculator with the keyboard. I use linux mint, will there be a configuration problem with linux? Thank you for your time. There I send you an extract of the code. Thanks in advance. # using calculator from the keyboard def bind_keys(self): self.window.bind("", lambda event: self.evaluate()) for key in self.digits: self.window.bind(str(key), lambda event, digit = key: self.add_to_expression(digit)) for key in self.operations: self.window.bind(key, lambda event, operator = key: self.append_operator(operator))
@pietrodante6016
@pietrodante6016 2 жыл бұрын
I had also trouble with the keyboard. Please add to the function bind_keys: self.window.bind("", lambda event: self.clear()) # add clear key self.window.bind("", lambda event: self.square()) # add square key with pressed self.window.bind("", lambda event: self sqrt()) # add square-root key with pressed. I had no trouble with and keys on my keyboard. If you have, try any other key of yourchoice to perform add_to_expression()
@NamelessFG
@NamelessFG 2 жыл бұрын
Why is it that after I added the Square and sqrt function lines my equals and clear buttons dissapared in the gui? Great video anways.
@devscloud7600
@devscloud7600 2 жыл бұрын
it coulod happen that you put the sq and sqrt button at the same location of clear and equal
@yadhufr
@yadhufr 2 жыл бұрын
calc.run is not showing for me
@sai24243
@sai24243 2 жыл бұрын
iam getting error like( AttributeError: 'Calculator' object has no attribute 'window)
@fatimazahra8411
@fatimazahra8411 Жыл бұрын
me too have you fix it ?
@georg101
@georg101 3 жыл бұрын
Nice. Could you make a project with pyqt5?
@TheBajamans
@TheBajamans 3 жыл бұрын
Thank you so much for this amazing tutorial! I've learned a lot from it. There is only one thing i don't understand and it is why when trying to solve the problem where pressing any key would resulti in only "." being printed on the screen, "lambda x=digit: self.add_to_expression(x)" works, but "lambda: self.add_to_expression(digit)" doesen't. Keep up the amazing work!
@antoc779
@antoc779 2 жыл бұрын
I believe that in the first case at the moment of calling the self.add_to_expression(digit) through the lambda function the value of the argument (digit) will corrispond to the last value assigned in the loop (In our case "."). In the second case, with lambda x=digit: self.add_to_expression(x) we assign a default argument to x that corrisponds to the value of digit at the step of the loop where the button is created (The button showing "1" will have a default value of "1", "2" of "2" and so on)
@ovi_4
@ovi_4 2 жыл бұрын
Hi, just managed to follow the complete code with NO errors but even then it would just simply not run at all since I just could not install the venc (the virtual environment in python) for some reason. It kept telling me that this computer is missing some permissions for running scripts. So as a result while working on the code I could only rely on no error reporting method (available from within pycharm code window. However, I decided to finalize the code and managed to install pyinstaller in hope that it will run after packing the file into an executable (ready for my win 10 64Bit pro) but to my surprise, the app that I created still doesn't open, and doesn't complain at all. I do not see any error window showing up. I even tried to run the executable file as admin and in compatibility mode but still doesn't work. It is really frustrating after 2 days of working on this code still no joy. Now, what ??? Am I stuck here forever??? Please help anyone outthere. Tnx alot.
@jackcorsobarbiere-it7645
@jackcorsobarbiere-it7645 2 жыл бұрын
me too same problem, did you solved? if yes, how?? @Programiz heeelp
@tobyinstrumentals5461
@tobyinstrumentals5461 Жыл бұрын
You probably figured it out but I also encountered the same error. Fortunately enough I'm in the era of chatgpt so i was able to find a solution using this command "Set-ExecutionPolicy -Scope CurrentUser RemoteSigned" Paste this command on your terminal when you encounter that problem and it should be fixed. You can then proceed to activate your venv using the activation command. Hopefully this helps
@NiceToess
@NiceToess Жыл бұрын
the application allows number keys but what about keypads?
@shreyapardeshi4848
@shreyapardeshi4848 2 жыл бұрын
Can I perform it on Mac 🤔??
@umeshchandel8917
@umeshchandel8917 2 жыл бұрын
After using bind my calculator is not working can please solve the error
@umaraliali8241
@umaraliali8241 2 жыл бұрын
Please send the coding text.. Im getting error..while doing eval function
@ahmedrahat2921
@ahmedrahat2921 2 жыл бұрын
How to calculate percentage and create button
@atharvpatole5327
@atharvpatole5327 2 жыл бұрын
i'm getting attribure error as 'str' object has no attribute 'tk' @programiz
@Conversion108
@Conversion108 2 жыл бұрын
Can you guys make a browser like chrome
@williantran4928
@williantran4928 4 ай бұрын
How about making a sin cos tan button sir, pls help me!
@jahedulbhuiyan4891
@jahedulbhuiyan4891 2 жыл бұрын
when I write the sqrt(10) ,then why it is not showing the floating number??? only sqtr(9) = 3.0 ,sqrt(4) = 2.0 .......are showing the accurate result
@johnmandydalag5580
@johnmandydalag5580 Жыл бұрын
I can't open the folder using pycharm, no 'open with pycharm" button
@warrior1276
@warrior1276 Жыл бұрын
i cant seem to be able to change the background colour can u please help me
@kona_kona14
@kona_kona14 Жыл бұрын
i try run this code what he try run in 5.40 but when i run it " Error running 'calc': Cannot run program "C:\Users\Käyttäjä\PycharmProjects\animation\venv\Scripts\python.exe" (in directory "C:\Users\Käyttäjä\Desktop\calculator"): CreateProcess error=2, The system cannot find the file specified" help
@hackcoder6521
@hackcoder6521 2 жыл бұрын
How to add icon for app
@rafaelrivera9291
@rafaelrivera9291 Жыл бұрын
Is there an exercise to make this calculator?
@lukeav6097
@lukeav6097 Жыл бұрын
why is the window not resizable?
@enasali1777
@enasali1777 2 жыл бұрын
You can not use pick and grid together
@ayuketaruben
@ayuketaruben Жыл бұрын
the cod is run successfully but nothing is displaying on my screen for view. pleas help me out thanks.
@williantran4928
@williantran4928 3 ай бұрын
How can I make a delete button?
@kimcaeiro8461
@kimcaeiro8461 Жыл бұрын
hi could you please share the entire code in a file. thanks
@amegbehaeloge1364
@amegbehaeloge1364 Жыл бұрын
Helpful but can't see it well.if you can zoom it a bit for the views
@owllinux
@owllinux Жыл бұрын
Why was a Lambda function used? When it came to the button(command = lambda:function() ). Why not just the function?
@David-fq5un
@David-fq5un 2 ай бұрын
You can't directly assign a call to a function with an argument as an assignment, only a function name. lamba lets you get around that.
@krzysztofchruscielski626
@krzysztofchruscielski626 5 ай бұрын
_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack?
@tomoyaokazaki9915
@tomoyaokazaki9915 3 жыл бұрын
Also one thing convert that python file into .exe file and share it with us .
@leomonk974
@leomonk974 2 жыл бұрын
That’s not how that works
@adityaraj04
@adityaraj04 2 жыл бұрын
@@leomonk974 This kid thinks everything is so simple😂 i guess he doesn't even know how many characters do we write to get a single world hello🙃
@redstonegod296
@redstonegod296 2 жыл бұрын
@@adityaraj04 just 4 lines of code to make a simple label texted hello world
@adityaraj04
@adityaraj04 2 жыл бұрын
@@alaa6809 c language 🙂
@dazewaker262
@dazewaker262 Жыл бұрын
@@leomonk974 lol that is how it works.
@user-gt1yp8jz1k
@user-gt1yp8jz1k 6 ай бұрын
how to open folder by pycharm
@ashwinm1825
@ashwinm1825 Жыл бұрын
tkinter output is not opening,I don't know why? Any one know solution
@jagrititripathi8308
@jagrititripathi8308 4 ай бұрын
Throws error in if __name__ function and gui doesn't run
@adamviktorklimes405
@adamviktorklimes405 2 жыл бұрын
You speak very quitely and the effect sound is too loud. Thanks for the video and online python interpreter!
@tomasbernardo5972
@tomasbernardo5972 3 жыл бұрын
I have a problem for some time, when I try to open a .exe file that has been created from a python file it opens a console and then it instantly coses it. I'm not sure what should I do to fix this. Any help is appreciated
@programizstudios
@programizstudios 3 жыл бұрын
Hi Tomas, please make sure that .exe file is created successfully with the required command line parameters.
@karagani_roy
@karagani_roy 2 жыл бұрын
While making .exe file you have to mention --noconsole and make sure to add mainlooop at end of program.
@kishansindhi6963
@kishansindhi6963 3 жыл бұрын
please upload dart programming video
@kishansindhi6963
@kishansindhi6963 3 жыл бұрын
or upload dart tutorial on website
@kushalshaw2162
@kushalshaw2162 Жыл бұрын
Where is the source code for this ??
@anchallama8121
@anchallama8121 3 жыл бұрын
daju varkhari club house bata aako
@jackcorsobarbiere-it7645
@jackcorsobarbiere-it7645 2 жыл бұрын
NOT WORKING after executing the window not popping out .... calculator is not showing.... im stuck at minute 5 already and can't go on....console gives no errors but just not showing calculator window....how to resolve???
@David-fq5un
@David-fq5un 2 ай бұрын
try starting at the beginning again or copying and pasting just the beginning code from the GitHub.
@tanverahmed5666
@tanverahmed5666 Жыл бұрын
How can I run on emulator
@PrivateKero
@PrivateKero 2 жыл бұрын
This video leaves me with mixed feelings. It shows important solutions that everyone will come across when working with tkinter. But one thing bothers me a lot. In this video there is little explanation of why such decisions were made and what the long-term benefits are. For example, I wondered why we don't fill the dictionary with all the buttons. Later in the video this becomes clear, but the viewer must ultimately make the findings himself. Likewise, the concept of updating the label didn't really make sense to me until later and you just had to accept it during the implementation. In the end, the video probably shows interesting concepts, but doesn't really go into why things are solved this way, but simply does it.
@Jdeadevil
@Jdeadevil Жыл бұрын
It's impossible to debug because none of it explained well at all. I've tried comparing code exactly and I can't explain why I'm having this problem (the numbers appearing at the top but not the bottom display label). But his "I'm just going to---" comments make no sense.
@PrivateKero
@PrivateKero Жыл бұрын
@@Jdeadevil can you show your code? Maybe I can help.
@VC-pd6vy
@VC-pd6vy Жыл бұрын
AttributeError: 'Calculator' object has no attribute 'window' can anyone help me?
@David-fq5un
@David-fq5un 2 ай бұрын
try starting again from scratch. or try copying just the basic start code from his code at GitHub. I had that problem at first, and couldn't figure out why it didn't work for me.
@vineetchaudhary6661
@vineetchaudhary6661 2 жыл бұрын
When you 04 ÷ 3 it give you error pls help
@pietrodante6016
@pietrodante6016 2 жыл бұрын
because of the zero : if you do 4 / 3 = correct result displayed!
@miyukisakiko
@miyukisakiko Жыл бұрын
bro video haru nepali ma ni xa?
@roshangainju4104
@roshangainju4104 Жыл бұрын
nepal bata ho??
@tqnew
@tqnew 2 жыл бұрын
สวัสดีคับทุกคนๆ ทำไรกันอยู่เหรอ งื้องื้อ หยอกเล่นนะคับ อิอิ โทดคับ
3 PYTHON AUTOMATION PROJECTS FOR BEGINNERS
17:00
Internet Made Coder
Рет қаралды 1,5 МЛН
Пробую самое сладкое вещество во Вселенной
00:41
Кушать Хочу
Рет қаралды 2,9 МЛН
Why You Should Always Help Others ❤️
00:40
Alan Chikin Chow
Рет қаралды 118 МЛН
Универ. 13 лет спустя - ВСЕ СЕРИИ ПОДРЯД
9:07:11
Комедии 2023
Рет қаралды 4,8 МЛН
Python calculator app 🖩
15:08
Bro Code
Рет қаралды 67 М.
Modern Graphical User Interfaces in Python
11:12
NeuralNine
Рет қаралды 1,4 МЛН
ASMR Programming - Coding IOS (IPhone) Calculator - No Talking
16:45
6 Tips to write BETTER For Loops in Python
9:19
Patrick Loeber
Рет қаралды 246 М.
ASMR Programming - Calculator App Coding - No Talking
34:06
AsmrProg
Рет қаралды 4,5 МЛН
5 Useful Dunder Methods In Python
16:10
Indently
Рет қаралды 52 М.
5 Mini Python Projects - For Beginners
1:41:08
Tech With Tim
Рет қаралды 2,8 МЛН