title
Desktop GUI App With Python & Tkinter
description
In this video we will build a CRUD GUI app with Python, the Tkinter library and Sqlite3
Sponsor: Linode Cloud Hosting
Get $20 Free by visiting https://www.linode.com/traversy
Code:
https://github.com/bradtraversy/part_manager
💖 Become a Patron: Show support & get perks!
http://www.patreon.com/traversymedia
Website & Udemy Course Links:
https://www.traversymedia.com
Follow Traversy Media:
https://www.facebook.com/traversymedia
https://www.twitter.com/traversymedia
https://www.instagram.com/traversymedia
Resources:
I first learned about Tkinter from this great Udemy course so I want to give him credit:
https://www.udemy.com/course/the-python-mega-course
detail
{'title': 'Desktop GUI App With Python & Tkinter', 'heatmap': [{'end': 205.726, 'start': 135.16, 'weight': 1}], 'summary': 'Learn to build a desktop gui app with python using tkinter library for a computer repair shop part manager, integrating sqlite database, creating ui components, grid layout, form fields, list box, javascript functions, and database class creation, along with populating the database and managing part lists for a successful python gui development.', 'chapters': [{'end': 372.728, 'segs': [{'end': 54.876, 'src': 'embed', 'start': 24.945, 'weight': 0, 'content': [{'end': 29.346, 'text': "We're going to build a desktop GUI application with Python.", 'start': 24.945, 'duration': 4.401}, {'end': 34.508, 'text': "We're actually going to use a library called Tkinter or Tkinter, some people pronounce it.", 'start': 29.366, 'duration': 5.142}, {'end': 40.69, 'text': 'And it just allows you to build GUI applications on Windows and Mac and I think Linux as well.', 'start': 35.128, 'duration': 5.562}, {'end': 45.572, 'text': "And we're going to build a part manager for a computer repair shop.", 'start': 41.51, 'duration': 4.062}, {'end': 47.013, 'text': 'So, basically,', 'start': 45.612, 'duration': 1.401}, {'end': 54.876, 'text': 'the idea is that you know they get a customer and maybe they need to order a power supply or some memory or something and they can add in the part name,', 'start': 47.013, 'duration': 7.863}], 'summary': 'Building a desktop gui with python using tkinter to create a part manager for a computer repair shop.', 'duration': 29.931, 'max_score': 24.945, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU24945.jpg'}, {'end': 205.726, 'src': 'heatmap', 'start': 111.133, 'weight': 1, 'content': [{'end': 116.94, 'text': "And as far as the database, we're going to be using SQL light, which I think is fine for something like this,", 'start': 111.133, 'duration': 5.807}, {'end': 118.623, 'text': "where you're not going to have a ton of data.", 'start': 116.94, 'duration': 1.683}, {'end': 122.828, 'text': "It's just a small personal application, which I think it's fine for.", 'start': 118.683, 'duration': 4.145}, {'end': 126.652, 'text': "But you could just as well use MySQL or Postgres or whatever you'd like.", 'start': 122.868, 'duration': 3.784}, {'end': 132.358, 'text': "All right, so let's jump into VS Code and I just have an empty folder here called Part Manager.", 'start': 127.313, 'duration': 5.045}, {'end': 134.179, 'text': "So I'm going to open up my terminal.", 'start': 132.838, 'duration': 1.341}, {'end': 139.384, 'text': 'And of course, you need to have Python installed with the pip package manager.', 'start': 135.16, 'duration': 4.224}, {'end': 142.847, 'text': 'And what you want to do is install pipenv.', 'start': 139.724, 'duration': 3.123}, {'end': 148.291, 'text': "Okay, I already have installed, so I'm not going to run this, but that will install pipenv on your system.", 'start': 142.867, 'duration': 5.424}, {'end': 152.675, 'text': 'And then you can create a virtual environment with pipenv shell.', 'start': 148.432, 'duration': 4.243}, {'end': 159.62, 'text': 'rather than just doing everything globally and installing any dependencies we have globally on our system,', 'start': 154.156, 'duration': 5.464}, {'end': 166.564, 'text': "we'll install it into this virtual environment and it should create this pip file right here, which will show any dependencies,", 'start': 159.62, 'duration': 6.944}, {'end': 168.665, 'text': 'any packages that we install.', 'start': 166.564, 'duration': 2.101}, {'end': 171.127, 'text': 'so we want to select the correct interpreter in vs code.', 'start': 168.665, 'duration': 2.462}, {'end': 174.889, 'text': 'so command shift p and just if you just search for python,', 'start': 171.127, 'duration': 3.762}, {'end': 179.792, 'text': "you'll see this select interpreter and we're just going to go to this part manager right here.", 'start': 174.889, 'duration': 4.903}, {'end': 181.613, 'text': 'All right.', 'start': 181.133, 'duration': 0.48}, {'end': 191.138, 'text': "so now what we're going to do is use pipenv to install our dependencies, which is tkinter or tkinter.", 'start': 181.613, 'duration': 9.525}, {'end': 193.239, 'text': "I don't know, different people say it differently.", 'start': 191.218, 'duration': 2.021}, {'end': 196.681, 'text': 'And then also something called pyinstaller,', 'start': 193.92, 'duration': 2.761}, {'end': 205.726, 'text': 'because what I want to try doing is creating an executable file out of our Python script at the end of this, which worked flawlessly on Windows.', 'start': 196.681, 'duration': 9.045}], 'summary': 'Using sql light for small personal application, creating virtual environment with pipenv, installing tkinter and pyinstaller for creating executable file.', 'duration': 41.542, 'max_score': 111.133, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU111133.jpg'}, {'end': 205.726, 'src': 'embed', 'start': 174.889, 'weight': 3, 'content': [{'end': 179.792, 'text': "you'll see this select interpreter and we're just going to go to this part manager right here.", 'start': 174.889, 'duration': 4.903}, {'end': 181.613, 'text': 'All right.', 'start': 181.133, 'duration': 0.48}, {'end': 191.138, 'text': "so now what we're going to do is use pipenv to install our dependencies, which is tkinter or tkinter.", 'start': 181.613, 'duration': 9.525}, {'end': 193.239, 'text': "I don't know, different people say it differently.", 'start': 191.218, 'duration': 2.021}, {'end': 196.681, 'text': 'And then also something called pyinstaller,', 'start': 193.92, 'duration': 2.761}, {'end': 205.726, 'text': 'because what I want to try doing is creating an executable file out of our Python script at the end of this, which worked flawlessly on Windows.', 'start': 196.681, 'duration': 9.045}], 'summary': 'Using pipenv to install tkinter and pyinstaller for creating an executable file that worked on windows.', 'duration': 30.837, 'max_score': 174.889, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU174889.jpg'}, {'end': 268.943, 'src': 'embed', 'start': 215.448, 'weight': 5, 'content': [{'end': 222.61, 'text': 'And then we also want to install TK message box, which is just like an alert component type thing.', 'start': 215.448, 'duration': 7.162}, {'end': 225.83, 'text': 'OK, so those are the three dependencies.', 'start': 224.01, 'duration': 1.82}, {'end': 228.571, 'text': 'All right.', 'start': 225.85, 'duration': 2.721}, {'end': 231.171, 'text': 'So now what we want to do is just create a couple of files.', 'start': 228.611, 'duration': 2.56}, {'end': 235.912, 'text': "Let's create a file called part underscore manager dot pie.", 'start': 231.191, 'duration': 4.721}, {'end': 241.437, 'text': "And let's create db.py.", 'start': 237.092, 'duration': 4.345}, {'end': 244.521, 'text': 'So basically part manager is our main script.', 'start': 242.118, 'duration': 2.403}, {'end': 250.969, 'text': "And then db.py is where we'll create a database class to insert records and fetch and all that stuff.", 'start': 244.581, 'duration': 6.388}, {'end': 268.943, 'text': "So we're going to start off in part manager and let's first just bring in T Kinter and we're going to import everything from it and we need to create an app variable and we're going to set that equal to the T K method,", 'start': 251.51, 'duration': 17.433}], 'summary': 'Installing tk messagebox, creating part_manager.py and db.py, importing t kinter', 'duration': 53.495, 'max_score': 215.448, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU215448.jpg'}, {'end': 344.062, 'src': 'embed', 'start': 313.078, 'weight': 8, 'content': [{'end': 316.62, 'text': 'Obviously, I also want to set this to a certain height and width.', 'start': 313.078, 'duration': 3.542}, {'end': 325.944, 'text': "So what I'm going to do is take this app variable and change the title to part manager.", 'start': 317.26, 'duration': 8.684}, {'end': 333.15, 'text': "Now, as far as resizing the window there's different ways to do it.", 'start': 327.344, 'duration': 5.806}, {'end': 335.558, 'text': "I'm going to use a method called geometry.", 'start': 333.17, 'duration': 2.388}, {'end': 341.422, 'text': 'And what this does is we can pass in the width times the height.', 'start': 337.501, 'duration': 3.921}, {'end': 344.062, 'text': "So I'm going to say 700 times 350.", 'start': 341.722, 'duration': 2.34}], 'summary': 'Using the geometry method to set app window to 700x350.', 'duration': 30.984, 'max_score': 313.078, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU313078.jpg'}], 'start': 7.093, 'title': 'Building python gui with tkinter', 'summary': 'Explores building a desktop gui application with python using the tkinter library to create a part manager for a computer repair shop, integrating sqlite as the database, and demonstrating installation of dependencies and creation of an executable file. it also explains the process of creating a python gui using tkinter, including importing dependencies, creating main and database files, and setting up the initial window with title and dimensions.', 'chapters': [{'end': 214.848, 'start': 7.093, 'title': 'Build a desktop gui app with python', 'summary': 'Explores building a desktop gui application with python using the tkinter library to create a part manager for a computer repair shop, integrating sql light as the database and demonstrating the installation of dependencies and creation of an executable file.', 'duration': 207.755, 'highlights': ['The chapter demonstrates building a desktop GUI application with Python using the Tkinter library to create a part manager for a computer repair shop, showcasing the addition, update, removal, and clearing of parts, along with the integration of a scroll bar and the focus on creating widgets and adding functionality to them.', 'The chapter emphasizes the usage of SQL light as the database for the small personal application, while also mentioning the option to use MySQL or Postgres, highlighting the versatility and adaptability of database options for different requirements.', 'The chapter illustrates the installation of pipenv to create a virtual environment, ensuring the management and isolation of dependencies for the project, providing a structured and controlled development environment.', 'The chapter explores the installation of tkinter and pyinstaller using pipenv, enabling the creation of an executable file from the Python script, with successful execution on Windows and potential issues on Mac, demonstrating the process of handling platform-specific challenges.']}, {'end': 372.728, 'start': 215.448, 'title': 'Creating python gui with tkinter', 'summary': 'Explains the process of creating a python gui using tkinter, including importing dependencies, creating main and database files, and setting up the initial window with title and dimensions.', 'duration': 157.28, 'highlights': ['The chapter explains the process of creating a Python GUI using TKinter, including importing dependencies, creating main and database files, and setting up the initial window with title and dimensions.', 'The three dependencies required are TKinter, TK message box, and auto pep eight for code formatting.', "The main script 'part_manager.py' and 'db.py' for creating a database class are created to manage the application.", "The 'part_manager.py' script imports TKinter, creates an app variable, and sets up a window using the 'TK' method and 'main loop' method.", "The window title is changed to 'part manager' and its dimensions are set using the 'geometry' method, with dimensions of 700x350."]}], 'duration': 365.635, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU7093.jpg', 'highlights': ['The chapter demonstrates building a desktop GUI application with Python using the Tkinter library to create a part manager for a computer repair shop, showcasing the addition, update, removal, and clearing of parts, along with the integration of a scroll bar and the focus on creating widgets and adding functionality to them.', 'The chapter emphasizes the usage of SQLite as the database for the small personal application, while also mentioning the option to use MySQL or Postgres, highlighting the versatility and adaptability of database options for different requirements.', 'The chapter illustrates the installation of pipenv to create a virtual environment, ensuring the management and isolation of dependencies for the project, providing a structured and controlled development environment.', 'The chapter explores the installation of tkinter and pyinstaller using pipenv, enabling the creation of an executable file from the Python script, with successful execution on Windows and potential issues on Mac, demonstrating the process of handling platform-specific challenges.', 'The chapter explains the process of creating a Python GUI using TKinter, including importing dependencies, creating main and database files, and setting up the initial window with title and dimensions.', 'The three dependencies required are TKinter, TK message box, and auto pep eight for code formatting.', "The main script 'part_manager.py' and 'db.py' for creating a database class are created to manage the application.", "The 'part_manager.py' script imports TKinter, creates an app variable, and sets up a window using the 'TK' method and 'main loop' method.", "The window title is changed to 'part manager' and its dimensions are set using the 'geometry' method, with dimensions of 700x350."]}, {'end': 674.212, 'segs': [{'end': 452.164, 'src': 'embed', 'start': 405.614, 'weight': 0, 'content': [{'end': 408.135, 'text': 'Then we have a list box and we have a scroll bar.', 'start': 405.614, 'duration': 2.521}, {'end': 413.236, 'text': 'So we need to add we need to create these widgets and basically place them on the grid.', 'start': 408.215, 'duration': 5.021}, {'end': 417.976, 'text': "That's what we're going to use as a grid system here, which has rows and columns.", 'start': 413.556, 'duration': 4.42}, {'end': 423.877, 'text': "So let's go ahead and create our label for the the part the part name.", 'start': 418.616, 'duration': 5.261}, {'end': 427.118, 'text': "So I'm going to go right here and let's say part.", 'start': 423.897, 'duration': 3.221}, {'end': 438.428, 'text': "So first thing we're going to do is create a variable called part text and set this to a string variable string var like that.", 'start': 429.989, 'duration': 8.439}, {'end': 440.693, 'text': 'And then we need to create a label.', 'start': 439.169, 'duration': 1.524}, {'end': 445.697, 'text': 'So we have access to this label.', 'start': 443.615, 'duration': 2.082}, {'end': 449.221, 'text': 'We can create a label object because we brought it in from this Tkinter.', 'start': 445.717, 'duration': 3.504}, {'end': 450.542, 'text': 'We brought in everything up here.', 'start': 449.261, 'duration': 1.281}, {'end': 452.164, 'text': "That's why we can use this and this.", 'start': 450.582, 'duration': 1.582}], 'summary': 'Creating widgets like list box, scroll bar, and label to be placed on a grid system with rows and columns using tkinter library.', 'duration': 46.55, 'max_score': 405.614, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU405614.jpg'}, {'end': 652.243, 'src': 'embed', 'start': 624.659, 'weight': 2, 'content': [{'end': 627.781, 'text': 'I mean, you know, you can put whatever you want, wherever you want.', 'start': 624.659, 'duration': 3.122}, {'end': 630.322, 'text': "Let's see.", 'start': 629.741, 'duration': 0.581}, {'end': 633.043, 'text': 'I also want to align the label to the left.', 'start': 630.342, 'duration': 2.701}, {'end': 638.285, 'text': "So in this part label dot grid, I'm going to add another property called sticky.", 'start': 633.183, 'duration': 5.102}, {'end': 640.747, 'text': 'So and this is kind of weird.', 'start': 639.305, 'duration': 1.442}, {'end': 644.012, 'text': 'It takes in like W or E for west or east.', 'start': 640.807, 'duration': 3.205}, {'end': 646.155, 'text': 'We want to align it to the left.', 'start': 644.052, 'duration': 2.103}, {'end': 652.243, 'text': "So we want to use W or aligning it to the west, which is a little weird, but that's just the syntax.", 'start': 646.255, 'duration': 5.988}], 'summary': 'Adjust label alignment to the left using w or e.', 'duration': 27.584, 'max_score': 624.659, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU624659.jpg'}], 'start': 377.438, 'title': 'Python gui design with widgets and grid layout', 'summary': 'Discusses creating a python gui with widgets like labels, entries, buttons, list box, and scroll bar, utilizing a grid system with rows and columns. it also covers setting up a grid layout to place label and entry widgets in specific rows and columns, demonstrating the use of padding and alignment.', 'chapters': [{'end': 474.004, 'start': 377.438, 'title': 'Creating python gui with widgets', 'summary': 'Discusses creating a python gui with widgets, including labels, entries, buttons, list box, and scroll bar, and using a grid system with rows and columns. it also covers creating a label for the part name with some styling.', 'duration': 96.566, 'highlights': ['The chapter covers creating a Python GUI with widgets such as labels, entries, buttons, list box, and scroll bar, and utilizing a grid system with rows and columns.', 'It also discusses creating a label for the part name with some styling, using the Tkinter library to accomplish this.', 'The tutorial emphasizes the use of a variable called part text and a string var to store the part name.']}, {'end': 674.212, 'start': 474.004, 'title': 'Grid placement for label and entry', 'summary': 'Explains the process of setting up a grid layout to place a label and entry widget in row 0 and columns 0 and 1, demonstrating the use of padding and alignment.', 'duration': 200.208, 'highlights': ['Setting up grid layout to place label and entry widget Demonstrates setting up a grid layout to place a label and entry widget in row 0 and columns 0 and 1, enabling effective organization and presentation of the GUI components.', "Demonstration of padding and alignment Illustrates the use of padding on the y-axis and alignment of the label to the left using the 'sticky' property, enhancing the visual layout of the GUI."]}], 'duration': 296.774, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU377438.jpg', 'highlights': ['The chapter covers creating a Python GUI with widgets such as labels, entries, buttons, list box, and scroll bar, and utilizing a grid system with rows and columns.', 'Setting up grid layout to place label and entry widget Demonstrates setting up a grid layout to place a label and entry widget in row 0 and columns 0 and 1, enabling effective organization and presentation of the GUI components.', "Demonstration of padding and alignment Illustrates the use of padding on the y-axis and alignment of the label to the left using the 'sticky' property, enhancing the visual layout of the GUI.", 'It also discusses creating a label for the part name with some styling, using the Tkinter library to accomplish this.', 'The tutorial emphasizes the use of a variable called part text and a string var to store the part name.']}, {'end': 935.99, 'segs': [{'end': 766.679, 'src': 'embed', 'start': 727.889, 'weight': 0, 'content': [{'end': 732.193, 'text': "And then for the entry, same row, but we're gonna go over to three.", 'start': 727.889, 'duration': 4.304}, {'end': 734.595, 'text': "All right, so that's customer.", 'start': 732.213, 'duration': 2.382}, {'end': 737.057, 'text': 'The next one is retailer.', 'start': 734.735, 'duration': 2.322}, {'end': 746.244, 'text': "So we'll go ahead and place all these with retailer.", 'start': 737.077, 'duration': 9.167}, {'end': 761.235, 'text': "And let's see we'll change the text here to retailer and as far as the label goes now we're going to move down a row.", 'start': 750.567, 'duration': 10.668}, {'end': 765.919, 'text': 'So row one column zero text variable retailer tax.', 'start': 761.275, 'duration': 4.644}, {'end': 766.679, 'text': "That's correct.", 'start': 765.939, 'duration': 0.74}], 'summary': 'Updating entry to retailer in row 3, column 0. label: retailer tax.', 'duration': 38.79, 'max_score': 727.889, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU727889.jpg'}, {'end': 861.076, 'src': 'embed', 'start': 827.73, 'weight': 2, 'content': [{'end': 834.053, 'text': "because we're actually going to span some rows and it will actually push these over a little bit.", 'start': 827.73, 'duration': 6.323}, {'end': 839.855, 'text': "so let's create our list box, which is going to be our parts list.", 'start': 834.053, 'duration': 5.802}, {'end': 844.33, 'text': "so we'll say parts list, which is a list box widget.", 'start': 839.855, 'duration': 4.475}, {'end': 847.491, 'text': "So we'll call this parts list.", 'start': 845.811, 'duration': 1.68}, {'end': 852.033, 'text': "And let's set this to a list box.", 'start': 849.612, 'duration': 2.421}, {'end': 854.173, 'text': 'Pass in our app.', 'start': 852.973, 'duration': 1.2}, {'end': 857.074, 'text': 'And we can pass in a height here.', 'start': 855.314, 'duration': 1.76}, {'end': 858.135, 'text': "We're gonna do height.", 'start': 857.134, 'duration': 1.001}, {'end': 861.076, 'text': 'Height equals eight.', 'start': 860.055, 'duration': 1.021}], 'summary': 'Creating a parts list with a list box widget, setting height to eight.', 'duration': 33.346, 'max_score': 827.73, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU827730.jpg'}, {'end': 916.322, 'src': 'embed', 'start': 890.357, 'weight': 1, 'content': [{'end': 896.458, 'text': "And let's see we want to put this on row three, because remember the row one and wait a minute.", 'start': 890.357, 'duration': 6.101}, {'end': 901.199, 'text': 'Yeah Row zero and row one are the inputs and labels.', 'start': 896.918, 'duration': 4.281}, {'end': 903.299, 'text': 'Row two is going to be the buttons.', 'start': 901.899, 'duration': 1.4}, {'end': 907.22, 'text': "The buttons are actually going to go above the list box, but I'm going to do the buttons last.", 'start': 903.359, 'duration': 3.861}, {'end': 909.041, 'text': 'So this is going to be row three.', 'start': 907.6, 'duration': 1.441}, {'end': 916.322, 'text': "And then let's see, we want to do column zero because we want to start all the way over to the left.", 'start': 910.681, 'duration': 5.641}], 'summary': 'Arranging input, labels, and buttons in a grid layout.', 'duration': 25.965, 'max_score': 890.357, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU890357.jpg'}], 'start': 674.212, 'title': 'Form fields, list box, and gui layout', 'summary': 'Details the process of updating form fields for customer, retailer, and price, creating a parts list using a list box widget, and arranging components in a gui layout for better visual presentation.', 'chapters': [{'end': 827.73, 'start': 674.212, 'title': 'Updating form fields for customer, retailer, and price', 'summary': 'Details the process of updating form fields for customer, retailer, and price, specifying the positioning of each field and the corresponding text, and concludes with the adjustment of the list box.', 'duration': 153.518, 'highlights': ['The process involves updating form fields for customer, retailer, and price, specifying the positioning of each field and the corresponding text. Updating form fields for customer, retailer, and price', 'The positioning of each field is specified, with customer on row zero, retailer on row one, and price also on row one. Positioning of each field', 'The adjustment of the list box is mentioned as the concluding step. Adjustment of the list box']}, {'end': 886.999, 'start': 827.73, 'title': 'Creating parts list in list box widget', 'summary': 'Covers creating a parts list using a list box widget with a height of 8 and width of 50, and adding it to the grid.', 'duration': 59.269, 'highlights': ['Creating a parts list using a list box widget with a height of 8 and width of 50.', 'Adding the parts list to the grid.']}, {'end': 935.99, 'start': 890.357, 'title': 'Gui layout and spanning', 'summary': 'Discusses arranging components in a gui layout using rows and columns, specifying column spans, and row spans for better visual presentation.', 'duration': 45.633, 'highlights': ['The chapter covers arranging components in a GUI layout using rows and columns, where row zero and row one are the inputs and labels, and row two is for the buttons.', 'It explains the usage of column span to extend a component across multiple columns, similar to using tables in HTML.', 'The chapter also mentions the usage of row span to extend a component across multiple rows for a better visual presentation.']}], 'duration': 261.778, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU674212.jpg', 'highlights': ['Updating form fields for customer, retailer, and price', 'Arranging components in a GUI layout using rows and columns', 'Creating a parts list using a list box widget with a height of 8 and width of 50', 'The adjustment of the list box']}, {'end': 1288.855, 'segs': [{'end': 963.746, 'src': 'embed', 'start': 935.99, 'weight': 0, 'content': [{'end': 946.172, 'text': "let's do six and then add some padding on the y-axis 20 and then padding on the x-axis of 20..", 'start': 935.99, 'duration': 10.182}, {'end': 947.613, 'text': "All right, so let's save that.", 'start': 946.172, 'duration': 1.441}, {'end': 948.534, 'text': "Let's take a look.", 'start': 947.633, 'duration': 0.901}, {'end': 951.416, 'text': 'OK, so this is what we get.', 'start': 950.295, 'duration': 1.121}, {'end': 952.837, 'text': "It's our list box.", 'start': 951.436, 'duration': 1.401}, {'end': 960.463, 'text': "Now, like I said, I don't want the border, but I just wanted to leave it there so you could see, you know, the size of it and where it's located.", 'start': 953.818, 'duration': 6.645}, {'end': 963.746, 'text': "But I'm going to set here inside the list box.", 'start': 960.963, 'duration': 2.783}], 'summary': 'Adjust list box size and padding, remove border', 'duration': 27.756, 'max_score': 935.99, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU935990.jpg'}, {'end': 1082.039, 'src': 'embed', 'start': 1021.524, 'weight': 1, 'content': [{'end': 1023.905, 'text': "So we're going to put the scroll bar in the one next to it.", 'start': 1021.524, 'duration': 2.381}, {'end': 1028.049, 'text': 'Basically, it was the list box is zero one two.', 'start': 1024.786, 'duration': 3.263}, {'end': 1030.01, 'text': "And then we're going to put the scroll bar in three.", 'start': 1028.128, 'duration': 1.882}, {'end': 1034.454, 'text': 'So, I mean, that should at least show up now, I believe.', 'start': 1031.111, 'duration': 3.343}, {'end': 1035.534, 'text': 'So if we take a look.', 'start': 1034.554, 'duration': 0.98}, {'end': 1039.938, 'text': "OK, so it does show up, but it's not connected to the list box yet.", 'start': 1036.734, 'duration': 3.204}, {'end': 1045.021, 'text': "So what we need to do now, let's say set.", 'start': 1040.558, 'duration': 4.463}, {'end': 1050.408, 'text': 'Set scroll to list box.', 'start': 1047.106, 'duration': 3.302}, {'end': 1058.313, 'text': 'So we take our parts list, which is our list box, and we just call dot configure.', 'start': 1051.569, 'duration': 6.744}, {'end': 1064.737, 'text': 'And we wanna pass in here the Y scroll command.', 'start': 1060.294, 'duration': 4.443}, {'end': 1072.181, 'text': "And we're gonna set that to our scroll bar variable, which has a property called set.", 'start': 1066.978, 'duration': 5.203}, {'end': 1079.096, 'text': 'Okay, and then we wanna take our scroll bar and call dot configure.', 'start': 1072.941, 'duration': 6.155}, {'end': 1082.039, 'text': "And then we're going to pass in here a command.", 'start': 1080.097, 'duration': 1.942}], 'summary': 'Placing a scroll bar next to a list box and configuring the y scroll command with a scroll bar variable.', 'duration': 60.515, 'max_score': 1021.524, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU1021524.jpg'}, {'end': 1180.071, 'src': 'embed', 'start': 1101.972, 'weight': 3, 'content': [{'end': 1107.357, 'text': "But I'll show you, you know, once we add some data that we'll be able to scroll if we need to.", 'start': 1101.972, 'duration': 5.385}, {'end': 1112.882, 'text': "OK, so let's see, the next thing we'll do is add our buttons.", 'start': 1109.238, 'duration': 3.644}, {'end': 1117.266, 'text': "So let's go down here and say buttons.", 'start': 1114.723, 'duration': 2.543}, {'end': 1125.801, 'text': "So we're going to have four different buttons, add, remove, update and clear, clear the text or clear the input, whatever.", 'start': 1119.056, 'duration': 6.745}, {'end': 1134.108, 'text': "So let's do the add button, call it add underscore BTN, set it to a button, pass an app.", 'start': 1126.322, 'duration': 7.786}, {'end': 1139.933, 'text': 'And this is going to take in text what we want the button to say, which is going to be add part.', 'start': 1134.468, 'duration': 5.465}, {'end': 1144.72, 'text': "OK And then let's we can set a width.", 'start': 1142.619, 'duration': 2.101}, {'end': 1151.905, 'text': "I'm going to say with 12 and then it's going to have a command which is going to be add underscore item.", 'start': 1144.8, 'duration': 7.105}, {'end': 1154.126, 'text': 'So this is going to be a function that we need to create.', 'start': 1151.985, 'duration': 2.141}, {'end': 1157.008, 'text': 'OK And then we need to add this to the grid.', 'start': 1154.146, 'duration': 2.862}, {'end': 1158.529, 'text': 'So add button dot grid.', 'start': 1157.068, 'duration': 1.461}, {'end': 1168.215, 'text': 'So you can see I mean the available widgets and how we add them to the UI using this dot grid and using the columns and rows.', 'start': 1158.549, 'duration': 9.666}, {'end': 1173.689, 'text': "So we're going to go row two because it's going to be above the list box, which is row three.", 'start': 1168.928, 'duration': 4.761}, {'end': 1180.071, 'text': "And then let's say column equals zero because it's going to be the first button.", 'start': 1174.589, 'duration': 5.482}], 'summary': 'Adding four different buttons (add, remove, update, clear) with specific functions and positions on the ui grid.', 'duration': 78.099, 'max_score': 1101.972, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU1101972.jpg'}], 'start': 935.99, 'title': 'Creating ui components in python', 'summary': "Discusses creating a list box with padding and removing the border, then linking a scroll bar to the list box and configuring the scroll bar's functionality. it also demonstrates creating four different buttons - add, remove, update, and clear - in a user interface using python, with each button having specific commands and positions in the ui.", 'chapters': [{'end': 1101.391, 'start': 935.99, 'title': 'Creating list box and scroll bar', 'summary': "Discusses creating a list box with padding and removing the border, then linking a scroll bar to the list box and configuring the scroll bar's functionality.", 'duration': 165.401, 'highlights': ['Creating a list box with padding and removing the border The speaker explains setting padding on the y-axis and x-axis to 20 and removing the border of the list box, demonstrating the visual changes.', 'Linking a scroll bar to the list box The process of creating a scroll bar and positioning it on the grid in relation to the list box, ensuring its visibility and initial setup.', "Configuring the scroll bar's functionality Explanation of linking the scroll bar to the list box and configuring the Y scroll command and y view for the scroll bar, defining its behavior."]}, {'end': 1288.855, 'start': 1101.972, 'title': 'Creating buttons and adding functionality', 'summary': 'Demonstrates creating four different buttons - add, remove, update, and clear - in a user interface using python, with each button having specific commands and positions in the ui.', 'duration': 186.883, 'highlights': ['The chapter covers adding four different buttons - add, remove, update, and clear - to a user interface in Python, each with specific text and commands, demonstrating the process of adding functionality to the UI.', "The buttons are positioned in the UI using the 'grid' method, with specific rows and columns defined for each button, providing a clear layout and functionality for the user interface.", 'The add button is set to a specific width of 12, demonstrating the ability to customize the visual aspects of the buttons in the UI to enhance user experience and aesthetics.', 'The chapter also highlights the process of copying and modifying the properties of the buttons to create additional buttons, showing a systematic approach to implementing similar functionalities in the user interface.']}], 'duration': 352.865, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU935990.jpg', 'highlights': ['Creating a list box with padding and removing the border The speaker explains setting padding on the y-axis and x-axis to 20 and removing the border of the list box, demonstrating the visual changes.', 'Linking a scroll bar to the list box The process of creating a scroll bar and positioning it on the grid in relation to the list box, ensuring its visibility and initial setup.', "Configuring the scroll bar's functionality Explanation of linking the scroll bar to the list box and configuring the Y scroll command and y view for the scroll bar, defining its behavior.", 'The chapter covers adding four different buttons - add, remove, update, and clear - to a user interface in Python, each with specific text and commands, demonstrating the process of adding functionality to the UI.', "The buttons are positioned in the UI using the 'grid' method, with specific rows and columns defined for each button, providing a clear layout and functionality for the user interface.", 'The add button is set to a specific width of 12, demonstrating the ability to customize the visual aspects of the buttons in the UI to enhance user experience and aesthetics.', 'The chapter also highlights the process of copying and modifying the properties of the buttons to create additional buttons, showing a systematic approach to implementing similar functionalities in the user interface.']}, {'end': 1946.604, 'segs': [{'end': 1333.267, 'src': 'embed', 'start': 1289.295, 'weight': 4, 'content': [{'end': 1298.398, 'text': "Now, if I save this and I try to run it, we're going to get an error because we're calling commands or we're calling functions here that don't exist.", 'start': 1289.295, 'duration': 9.103}, {'end': 1301.799, 'text': "So I'm going to put these up here now.", 'start': 1299.038, 'duration': 2.761}, {'end': 1310.276, 'text': "I'm going to also have in the repository in the description, I'm going to have an object oriented version of this script as well.", 'start': 1303.294, 'duration': 6.982}, {'end': 1318.058, 'text': "But I didn't want to do it in the video because I want to keep it simple and focus on the syntax for this library and how to create the interface.", 'start': 1311.476, 'duration': 6.582}, {'end': 1326, 'text': "I didn't want to really want to get into, you know, creating classes and stuff, although we are going to create a database class,", 'start': 1318.458, 'duration': 7.542}, {'end': 1327.381, 'text': "but it's a little more understandable.", 'start': 1326, 'duration': 1.381}, {'end': 1330.784, 'text': 'So I will have that in the repository as well.', 'start': 1328.322, 'duration': 2.462}, {'end': 1333.267, 'text': "So let's create these functions.", 'start': 1331.705, 'duration': 1.562}], 'summary': 'The speaker is addressing errors in the script and mentioning an object-oriented version in the repository.', 'duration': 43.972, 'max_score': 1289.295, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU1289295.jpg'}, {'end': 1497.948, 'src': 'embed', 'start': 1471.295, 'weight': 3, 'content': [{'end': 1478.977, 'text': "I mean, you don't have to use a class, but I think that it's I mean, it's much more organized and it's less code if we do it this way.", 'start': 1471.295, 'duration': 7.682}, {'end': 1484.599, 'text': "And it's it's pretty easy to understand if you've worked with classes in any other language.", 'start': 1479.997, 'duration': 4.602}, {'end': 1486.039, 'text': "It's not much different.", 'start': 1485.039, 'duration': 1}, {'end': 1489.1, 'text': 'Basically, we need a constructor.', 'start': 1487.419, 'duration': 1.681}, {'end': 1493.023, 'text': "Although in Python, it's called an initializer or init.", 'start': 1489.62, 'duration': 3.403}, {'end': 1497.948, 'text': 'So we want to define double underscore init double underscore.', 'start': 1493.544, 'duration': 4.404}], 'summary': 'Using a class in python for organization and less code, with a familiar constructor format.', 'duration': 26.653, 'max_score': 1471.295, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU1471295.jpg'}, {'end': 1570.851, 'src': 'embed', 'start': 1517.259, 'weight': 0, 'content': [{'end': 1523.723, 'text': 'Now, as far as what we want to do here, we basically want to set up our connection and we also want to create our table.', 'start': 1517.259, 'duration': 6.464}, {'end': 1528.346, 'text': "We're going to have a table called parts, and that's where all this stuff is going to be is going to be stored.", 'start': 1523.743, 'duration': 4.603}, {'end': 1533.63, 'text': 'So we need to take self, which is like using this in many other languages.', 'start': 1529.007, 'duration': 4.623}, {'end': 1538.293, 'text': "And so basically we're setting a property called connection or CO and N.", 'start': 1534.45, 'duration': 3.843}, {'end': 1546.463, 'text': "we're going to set that to sqlite3.connect, which is how we can connect to a database and pass in db,", 'start': 1538.959, 'duration': 7.504}, {'end': 1555.627, 'text': "which is going to get passed in when we initialize this, this class or the object from this class, and then we're going to have a cursor,", 'start': 1546.463, 'duration': 9.164}, {'end': 1557.888, 'text': 'so self.cur.', 'start': 1555.627, 'duration': 2.261}, {'end': 1561.97, 'text': 'so cursor is basically used to to execute queries.', 'start': 1557.888, 'duration': 4.082}, {'end': 1570.851, 'text': 'so we want to set this to self dot con, which is our connection, and then dot cursor.', 'start': 1561.97, 'duration': 8.881}], 'summary': 'Setting up connection and creating table for parts in sqlite3 database.', 'duration': 53.592, 'max_score': 1517.259, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU1517259.jpg'}], 'start': 1289.295, 'title': 'Javascript functions and database class creation', 'summary': 'Covers the creation of javascript functions for a library, emphasizing syntax and interface creation, and introduces an object-oriented version. additionally, it explores the creation of a database class using sqlite, covering connection setup, table creation, and crud operations such as fetch, insert, remove, update, and destructor methods.', 'chapters': [{'end': 1333.267, 'start': 1289.295, 'title': 'Javascript syntax and function creation', 'summary': 'Discusses creating functions in javascript for a library, with a focus on syntax and interface creation, while also mentioning an object oriented version of the script available in the repository.', 'duration': 43.972, 'highlights': ['The chapter discusses creating functions in JavaScript for a library.', 'It emphasizes focusing on syntax and interface creation.', 'An object oriented version of the script is available in the repository.']}, {'end': 1946.604, 'start': 1333.567, 'title': 'Creating database class and crud operations', 'summary': 'Discusses creating a database class using sqlite to set up connection, create a table, and define crud operations including fetch, insert, remove, update, and destructor method.', 'duration': 613.037, 'highlights': ['The chapter discusses creating a database class using SQLite to set up connection, create a table, and define CRUD operations including fetch, insert, remove, update, and destructor method.', 'The chapter explains the use of a class to organize and write less code for database operations, making it easy to understand for those familiar with classes in other languages.', "The chapter demonstrates the use of SQLite to set up a connection and create a table named 'parts' with fields such as ID, part, customer, retailer, and price.", 'The chapter illustrates the execution of CRUD operations including fetch, insert, remove, update, and a destructor method to close the connection in Python using SQLite.', "The chapter details the implementation of fetch, insert, remove, update, and destructor methods within the database class to perform relevant CRUD operations on the 'parts' table."]}], 'duration': 657.309, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU1289295.jpg', 'highlights': ["The chapter demonstrates the use of SQLite to set up a connection and create a table named 'parts' with fields such as ID, part, customer, retailer, and price.", "The chapter details the implementation of fetch, insert, remove, update, and destructor methods within the database class to perform relevant CRUD operations on the 'parts' table.", 'The chapter discusses creating a database class using SQLite to set up connection, create a table, and define CRUD operations including fetch, insert, remove, update, and destructor method.', 'The chapter explains the use of a class to organize and write less code for database operations, making it easy to understand for those familiar with classes in other languages.', 'The chapter discusses creating functions in JavaScript for a library.', 'It emphasizes focusing on syntax and interface creation.', 'An object oriented version of the script is available in the repository.']}, {'end': 2434.996, 'segs': [{'end': 1999.74, 'src': 'embed', 'start': 1971.029, 'weight': 0, 'content': [{'end': 1974.87, 'text': "And remember, it takes in the database name, which I'm going to call store dot DB.", 'start': 1971.029, 'duration': 3.841}, {'end': 1982.344, 'text': 'All right, so that will instantiate it and then we can use this DB to call any of these methods.', 'start': 1976.158, 'duration': 6.186}, {'end': 1988.67, 'text': "and we want to call insert, because that's what we're doing is inserting some stuff into the database.", 'start': 1982.344, 'duration': 6.326}, {'end': 1993.434, 'text': "Now, I'm just going to paste this in because it's just a bunch of insert statements.", 'start': 1989.03, 'duration': 4.404}, {'end': 1995.216, 'text': 'You can copy it if you want.', 'start': 1993.974, 'duration': 1.242}, {'end': 1999.74, 'text': 'It should be in the in the repository commented out if you want to grab it from there.', 'start': 1996.096, 'duration': 3.644}], 'summary': 'The transcript discusses instantiating a database and using insert statements to add data.', 'duration': 28.711, 'max_score': 1971.029, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU1971029.jpg'}, {'end': 2073.563, 'src': 'embed', 'start': 2044.864, 'weight': 1, 'content': [{'end': 2051.969, 'text': "connect, okay, so there's our parts table, so we should be able to get the data.", 'start': 2044.864, 'duration': 7.105}, {'end': 2058.013, 'text': "um, let's say, i haven't used this in quite a while.", 'start': 2051.969, 'duration': 6.044}, {'end': 2059.393, 'text': 'yeah, generate query.', 'start': 2058.013, 'duration': 1.38}, {'end': 2064.418, 'text': "so we'll say select, and we'll just select from parts and let's run this.", 'start': 2059.393, 'duration': 5.025}, {'end': 2065.938, 'text': "so we'll click play and there we go.", 'start': 2064.418, 'duration': 1.52}, {'end': 2072.203, 'text': 'so you can see that the data is in fact in our sqlite database All right.', 'start': 2065.938, 'duration': 6.265}, {'end': 2073.563, 'text': "So we know that that's there now.", 'start': 2072.263, 'duration': 1.3}], 'summary': 'Successfully retrieved data from parts table in sqlite database.', 'duration': 28.699, 'max_score': 2044.864, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU2044864.jpg'}, {'end': 2127.424, 'src': 'embed', 'start': 2095.435, 'weight': 2, 'content': [{'end': 2109.166, 'text': "So let's say from DB, let's import the database class and then say from enough from DB equals database.", 'start': 2095.435, 'duration': 13.731}, {'end': 2113.129, 'text': "So we're just instantiating this DB object, just like we did in the other file.", 'start': 2109.206, 'duration': 3.923}, {'end': 2115.371, 'text': "And we're going to use our store dot DB.", 'start': 2113.609, 'duration': 1.762}, {'end': 2121.022, 'text': "OK, so we already have the table created, so it's not actually going to create this.", 'start': 2116.84, 'duration': 4.182}, {'end': 2122.642, 'text': "It's just going to basically use it.", 'start': 2121.082, 'duration': 1.56}, {'end': 2127.424, 'text': "And then let's see down in our populate list.", 'start': 2124.443, 'duration': 2.981}], 'summary': 'Importing database class and instantiating db object to use existing table for populating list.', 'duration': 31.989, 'max_score': 2095.435, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU2095435.jpg'}, {'end': 2175.139, 'src': 'embed', 'start': 2150.662, 'weight': 3, 'content': [{'end': 2158.169, 'text': "So we're going to loop through those and then we're going to take our parts list which is the list box widget and we're going to insert.", 'start': 2150.662, 'duration': 7.507}, {'end': 2166.956, 'text': 'OK It actually has a method called insert and we want to insert it on the end and we want to insert the row the current row in the loop.', 'start': 2158.989, 'duration': 7.967}, {'end': 2169.87, 'text': "So let's go ahead and save that.", 'start': 2168.467, 'duration': 1.403}, {'end': 2175.139, 'text': 'And if we run our application, so we want to run part manager.', 'start': 2171.052, 'duration': 4.087}], 'summary': 'Loop through parts list to insert rows in application.', 'duration': 24.477, 'max_score': 2150.662, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU2150662.jpg'}, {'end': 2233.255, 'src': 'embed', 'start': 2207.361, 'weight': 4, 'content': [{'end': 2213.384, 'text': "You'll see that now we have it's been populated twice and you can also see the scroll bar works.", 'start': 2207.361, 'duration': 6.023}, {'end': 2215.204, 'text': "I don't want that to happen though.", 'start': 2213.844, 'duration': 1.36}, {'end': 2223.428, 'text': "So what we're going to do is right before we run this loop we're going to call parts list and we're going to call delete.", 'start': 2215.344, 'duration': 8.084}, {'end': 2226.089, 'text': 'OK Which is a method we can use on the list box.', 'start': 2223.908, 'duration': 2.181}, {'end': 2229.031, 'text': 'And we want to delete everything.', 'start': 2226.949, 'duration': 2.082}, {'end': 2233.255, 'text': "So we're going to say zero and zero.", 'start': 2229.752, 'duration': 3.503}], 'summary': "The list has been populated twice, and we want to delete everything using the 'delete' method on the list box.", 'duration': 25.894, 'max_score': 2207.361, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU2207361.jpg'}, {'end': 2298.251, 'src': 'embed', 'start': 2263.744, 'weight': 5, 'content': [{'end': 2265.967, 'text': "Let's just do the the basic insert.", 'start': 2263.744, 'duration': 2.223}, {'end': 2268.91, 'text': 'So we want to insert it into the database first.', 'start': 2266.107, 'duration': 2.803}, {'end': 2271.313, 'text': "So we're going to take DB and call insert.", 'start': 2268.97, 'duration': 2.343}, {'end': 2275.882, 'text': 'And this is going to take in the data.', 'start': 2273.281, 'duration': 2.601}, {'end': 2286.326, 'text': "So if we look at our add item, not add item insert, it's going to get part customer retailer price now to get the data from the entry,", 'start': 2276.763, 'duration': 9.563}, {'end': 2288.387, 'text': "because that's what we want to pass in here.", 'start': 2286.326, 'duration': 2.061}, {'end': 2291.028, 'text': 'We can do that with the text.', 'start': 2289.208, 'duration': 1.82}, {'end': 2298.251, 'text': 'So like part text, for instance, and then we can call the get method that will actually get whatever is typed,', 'start': 2291.128, 'duration': 7.123}], 'summary': 'Insert data into database using db insert method.', 'duration': 34.507, 'max_score': 2263.744, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU2263744.jpg'}], 'start': 1946.804, 'title': 'Populating database with data and part list management', 'summary': 'Covers populating a database with data, including creating a database, inserting data, and verifying the data, demonstrating usage of database class methods. it also describes managing a parts list, inserting, deleting, and validating list items, preventing duplicates, and validating input data, resulting in successful addition of a new part.', 'chapters': [{'end': 2150.002, 'start': 1946.804, 'title': 'Populating database with data', 'summary': 'Covers the process of populating a database with data, including creating a database, inserting data, and verifying the data in the sqlite database, demonstrating the functionality and usage of methods from a database class.', 'duration': 203.198, 'highlights': ['The process involves instantiating the database class and calling the insert method to populate the database with data. The chapter discusses the instantiation of the database class and the usage of the insert method to add data to the database.', 'Demonstrating the verification of data in the SQLite database using SQL queries and the fetch method from the database class. It showcases the verification of data in the SQLite database through the execution of SQL queries and the usage of the fetch method from the database class.', 'Importing the database class, instantiating the DB object, and using the store.DB to access the table and populate the list. The chapter explains the process of importing the database class, creating the DB object for accessing the table, and populating the list by looping through the rows using the fetch method.']}, {'end': 2434.996, 'start': 2150.662, 'title': 'Part list management', 'summary': 'Describes the process of populating and managing a parts list, including inserting, deleting, and validating list items, as well as inserting items into the database, with examples of preventing duplicate entries and validating input data using method calls and widgets, resulting in a successful addition of a new part.', 'duration': 284.334, 'highlights': ["Using the method 'insert' to add a row at the end of the parts list and ensuring that the list does not repeat itself, resulting in a streamlined and efficient parts list population.", "Utilizing the 'delete' method to clear the parts list before inserting new data, ensuring the prevention of duplicate entries and maintaining data integrity.", "Inserting data into the database using the 'insert' method, obtaining input values using the 'get' method and passing them as a tuple, allowing successful addition of new parts to the database.", "Implementing validation by obtaining input data from widgets such as 'part text,' 'customer,' 'retailer,' and 'price,' ensuring accurate data entry and preventing errors in the parts list management."]}], 'duration': 488.192, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU1946804.jpg', 'highlights': ['The chapter discusses the instantiation of the database class and the usage of the insert method to add data to the database.', 'It showcases the verification of data in the SQLite database through the execution of SQL queries and the usage of the fetch method from the database class.', 'The chapter explains the process of importing the database class, creating the DB object for accessing the table, and populating the list by looping through the rows using the fetch method.', "Using the method 'insert' to add a row at the end of the parts list and ensuring that the list does not repeat itself, resulting in a streamlined and efficient parts list population.", "Utilizing the 'delete' method to clear the parts list before inserting new data, ensuring the prevention of duplicate entries and maintaining data integrity.", "Inserting data into the database using the 'insert' method, obtaining input values using the 'get' method and passing them as a tuple, allowing successful addition of new parts to the database.", "Implementing validation by obtaining input data from widgets such as 'part text,' 'customer,' 'retailer,' and 'price,' ensuring accurate data entry and preventing errors in the parts list management."]}, {'end': 3397.735, 'segs': [{'end': 2467.379, 'src': 'embed', 'start': 2436.914, 'weight': 3, 'content': [{'end': 2442.219, 'text': 'The issue that I have with this is if we clear all these out, we click add part.', 'start': 2436.914, 'duration': 5.305}, {'end': 2446.043, 'text': 'It just adds this and all this empty stuff here.', 'start': 2442.9, 'duration': 3.143}, {'end': 2447.184, 'text': "I don't want to do that.", 'start': 2446.063, 'duration': 1.121}, {'end': 2454.931, 'text': "So what I'm going to do is have a little bit of validation here and I want it to have a message box.", 'start': 2448.305, 'duration': 6.626}, {'end': 2458.635, 'text': 'So this is where that TK message box comes in that I installed.', 'start': 2455.051, 'duration': 3.584}, {'end': 2460.456, 'text': "So we're going to say from.", 'start': 2459.355, 'duration': 1.101}, {'end': 2467.379, 'text': 'T Kinter imports message box.', 'start': 2462.458, 'duration': 4.921}], 'summary': 'Implementing validation using tkinter message box', 'duration': 30.465, 'max_score': 2436.914, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU2436914.jpg'}, {'end': 2680.548, 'src': 'embed', 'start': 2649.762, 'weight': 2, 'content': [{'end': 2659.366, 'text': 'Basically, we want to bind the select to the select item function, so parts list, and we can call a method called bind.', 'start': 2649.762, 'duration': 9.604}, {'end': 2672.462, 'text': "In here, we're going to put in these double, this is kind of weird syntax, but these double angle brackets and then a list box select like that.", 'start': 2659.386, 'duration': 13.076}, {'end': 2678.567, 'text': 'And then the function we want to bind to, which is called select item.', 'start': 2672.602, 'duration': 5.965}, {'end': 2680.548, 'text': 'All right.', 'start': 2680.308, 'duration': 0.24}], 'summary': 'Binding the select to the select item function using double angle brackets and method called bind.', 'duration': 30.786, 'max_score': 2649.762, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU2649762.jpg'}, {'end': 2825.241, 'src': 'embed', 'start': 2793.209, 'weight': 4, 'content': [{'end': 2796.331, 'text': 'You can see we get the data every time I select.', 'start': 2793.209, 'duration': 3.122}, {'end': 2805.79, 'text': 'OK, so now What we need to do is we want to add before we do that, get to the remove.', 'start': 2797.451, 'duration': 8.339}, {'end': 2814.015, 'text': "I shouldn't even mention the remove yet, because what we need to do first is when we actually select, we want to put the data into these entries.", 'start': 2805.81, 'duration': 8.205}, {'end': 2816.896, 'text': "OK, so let's do that.", 'start': 2815.355, 'duration': 1.541}, {'end': 2825.241, 'text': "We'll get rid of that, and I mean, first thing we want to do is delete the entry and then insert it.", 'start': 2818.697, 'duration': 6.544}], 'summary': 'Data is obtained every time a selection is made. the goal is to insert the data into the entries and then remove it.', 'duration': 32.032, 'max_score': 2793.209, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU2793209.jpg'}, {'end': 2925.242, 'src': 'embed', 'start': 2894.684, 'weight': 1, 'content': [{'end': 2901.887, 'text': 'And now if I select one of these, you see that the data gets I mean, first it deletes from each entry and then it adds the data.', 'start': 2894.684, 'duration': 7.203}, {'end': 2903.908, 'text': 'All right.', 'start': 2901.907, 'duration': 2.001}, {'end': 2905.589, 'text': 'So now for the remove.', 'start': 2904.368, 'duration': 1.221}, {'end': 2914.713, 'text': 'For the remove, this is actually going to be pretty easy because we have access to that, this selected item, which is a global variable.', 'start': 2905.609, 'duration': 9.104}, {'end': 2925.242, 'text': "So let's say DB dot we're going to call remove from our database class and just simply pass in the selected item zero.", 'start': 2916.215, 'duration': 9.027}], 'summary': 'Demonstrating data deletion and addition process in database class.', 'duration': 30.558, 'max_score': 2894.684, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU2894684.jpg'}, {'end': 3267.481, 'src': 'embed', 'start': 3242.045, 'weight': 5, 'content': [{'end': 3249.427, 'text': 'And if you are on Windows, you should be able to just run PI installer and then the name of the script, which is part,', 'start': 3242.045, 'duration': 7.382}, {'end': 3260.495, 'text': "And then we just want to add dash dash one file, because we want to create one executable and then dash dash windowed, since it's a GUI program.", 'start': 3250.627, 'duration': 9.868}, {'end': 3263.818, 'text': 'So if you run this on Windows, everything should be OK.', 'start': 3261.076, 'duration': 2.742}, {'end': 3267.481, 'text': "On Mac, unfortunately, the file just doesn't open.", 'start': 3264.458, 'duration': 3.023}], 'summary': 'On windows, running the pi installer followed by the script name with specified options should create one executable. on mac, the file does not open.', 'duration': 25.436, 'max_score': 3242.045, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU3242045.jpg'}, {'end': 3397.735, 'src': 'embed', 'start': 3387.403, 'weight': 0, 'content': [{'end': 3393.57, 'text': 'but it gives you an idea on how to start to create your own gui apps with python and tkinter.', 'start': 3387.403, 'duration': 6.167}, {'end': 3394.131, 'text': "so that's it.", 'start': 3393.57, 'duration': 0.561}, {'end': 3395.473, 'text': 'hopefully you guys enjoyed this.', 'start': 3394.131, 'duration': 1.342}, {'end': 3397.735, 'text': "if you did, please leave a like and i'll see you next time.", 'start': 3395.473, 'duration': 2.262}], 'summary': 'Learn to create gui apps with python and tkinter. enjoyed by audience.', 'duration': 10.332, 'max_score': 3387.403, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU3387403.jpg'}], 'start': 2436.914, 'title': 'Python gui development', 'summary': 'Covers implementing validation, list box data manipulation, and creating a python gui application with tkinter. it includes using tkinter message box for input validation, manipulating data in a list box, and creating a simple gui application with focus on enhancing user experience.', 'chapters': [{'end': 2584.223, 'start': 2436.914, 'title': 'Implementing simple validation in python', 'summary': 'Demonstrates implementing simple validation in python using tkinter message box to prompt users to include all required fields before adding an item to the program, preventing empty inputs and enhancing user experience.', 'duration': 147.309, 'highlights': ["Implementing simple validation using TKinter message box to prompt users to include all required fields before adding an item, enhancing user experience and preventing empty inputs (e.g., 'please include all fields' message),", "Utilizing if statements to check for empty inputs in the add item function and triggering the message box to display a 'required fields' message if any input is empty."]}, {'end': 2893.043, 'start': 2585.844, 'title': 'List box data manipulation', 'summary': 'Demonstrates how to manipulate data in a list box by selecting items, setting global variables, and updating entry fields, with a focus on binding events and using list box methods.', 'duration': 307.199, 'highlights': ['The chapter explains the process of binding the select event to the select item function, enabling the list box to trigger the select item function when an item is chosen, fostering smooth data manipulation.', 'It demonstrates the use of global variables to store selected items, allowing for easy access and manipulation of the selected data, streamlining the data management process.', 'The tutorial illustrates the method of updating entry fields with selected data from the list box, showcasing efficient data transfer and entry field population for enhanced user experience.', 'The chapter covers the process of deleting and inserting data into entry fields based on the selected item, facilitating dynamic data display and manipulation within the application.']}, {'end': 3397.735, 'start': 2894.684, 'title': 'Python gui application with tkinter', 'summary': 'Details the process of creating a python gui application using tkinter, including adding, removing, updating, and creating an executable, with a focus on creating a simple application and troubleshooting issues on different operating systems.', 'duration': 503.051, 'highlights': ['The chapter details the process of creating a Python GUI application using Tkinter The transcript provides a step-by-step guide on creating a Python GUI application using Tkinter, demonstrating the process of adding, removing, updating, and creating an executable.', 'Troubleshooting issues on different operating systems The speaker troubleshoots issues with creating an executable on different operating systems, highlighting the challenges faced on Mac and providing a workaround for creating an executable.', 'Demonstrating the process of adding, removing, updating, and creating an executable The speaker demonstrates the process of adding, removing, updating, and creating an executable using Python and Tkinter, showcasing the functionality of the application.']}], 'duration': 960.821, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/ELkaEpN29PU/pics/ELkaEpN29PU2436914.jpg', 'highlights': ['The chapter details the process of creating a Python GUI application using Tkinter, providing a step-by-step guide on adding, removing, updating, and creating an executable.', 'Demonstrating the use of global variables to store selected items, allowing for easy access and manipulation of the selected data, streamlining the data management process.', 'The chapter explains the process of binding the select event to the select item function, enabling the list box to trigger the select item function when an item is chosen, fostering smooth data manipulation.', 'Implementing simple validation using TKinter message box to prompt users to include all required fields before adding an item, enhancing user experience and preventing empty inputs.', 'The tutorial illustrates the method of updating entry fields with selected data from the list box, showcasing efficient data transfer and entry field population for enhanced user experience.', 'Troubleshooting issues on different operating systems, highlighting the challenges faced on Mac and providing a workaround for creating an executable.']}], 'highlights': ['The chapter demonstrates building a desktop GUI application with Python using the Tkinter library to create a part manager for a computer repair shop, showcasing the addition, update, removal, and clearing of parts, along with the integration of a scroll bar and the focus on creating widgets and adding functionality to them.', 'The chapter covers creating a Python GUI with widgets such as labels, entries, buttons, list box, and scroll bar, and utilizing a grid system with rows and columns.', 'The chapter discusses creating a list box with padding and removing the border The speaker explains setting padding on the y-axis and x-axis to 20 and removing the border of the list box, demonstrating the visual changes.', "The chapter demonstrates the use of SQLite to set up a connection and create a table named 'parts' with fields such as ID, part, customer, retailer, and price.", 'The chapter details the process of creating a Python GUI application using Tkinter, providing a step-by-step guide on adding, removing, updating, and creating an executable.']}