PySimpleGUI/docs/eCookbook/layouts/to-do-list-using-generated-...

46 lines
2.1 KiB
Markdown

**Generated Layouts - To Do List Program**
![SNAG-0492.jpg](https://user-images.githubusercontent.com/46163555/138909673-5af55647-509a-479b-9ba5-bc5d40465134.png)
This program demonstrates how you can a Python "List Comprehension" to create
a GUI layout. The layout is created in 3 steps.
1. A title line
2. The list of checkboxes and descriptions
3. The buttons
That is the layout that these 3 lines of code create
```python
layout = [[Text('My To Do List', font='Helvetica 15')]]
layout += [[Text(f'{i}. '), CBox('', key=f'-CB{i}-'), Input(k=f'-IN{i}-')] for i in range(1,6)]
layout += [[Button('Save'), Button('Load'), Button('Exit')]]
```
This program is a little different in that it imports the individual objects
being used. Typically the import you'll find in most PySimpleGUI programs is
```python
import PySimpleGUI as sg
```
The result of importing each object is that you do not need the `sg.` before each function call, thus making the code even more compact. The layout looks cleaner as well.
However, there are a few drawbacks. One is being able to easily spot calls to the PySimpleGUI package. Another is code completion. If you type `sg.` (control+SPACE) in an IDE, it will show you a list of choices from the PySimpleGUI pacakge that are available to you.
It's being presented simply as another way of doing things. You'll find the other demos use
```python
import PySimpleGUI as sg
```
<iframe src='https://trinket.io/embed/pygame/45e4bb64b8?start=result' width='100%' height='500' frameborder='0' marginwidth='0' marginheight='0' allowfullscreen></iframe>
---
**To Do List using "normal" import (`import PySimpleGUI as sg`)**
In this version, the typical import statement is used. The program is identical to the one above, but you'll notice that each element and PySimpleGUI object now has `sg.` in front of it. Nearly all demo programs use this import convention and users have adopted it as well. It's a standard of sorts at this point.
<iframe src='https://trinket.io/embed/pygame/3be33cd9ee?start=result' width='100%' height='500' frameborder='0' marginwidth='0' marginheight='0' allowfullscreen></iframe>