**["Элементы управления"](https://github.com/kolei/OAP/blob/master/articles/t8_elements.md#элементы-управления)**
***
**Python**
***

**FlowDirection**
***
```
import tkinter as tk

class MainWindow(tk.Tk):
    def __init__(self):
        super().__init__()

        self.title("Иванов Валера И-21")
        self.geometry("400x300")

        # Создание панели стека
        stack_panel = tk.Frame(self)
        stack_panel.pack(fill=tk.BOTH, expand=True)

        # Создание первой метки с направлением потока справа налево
        text_block1 = tk.Label(stack_panel, text="RightToLeft")
        text_block1.configure(font=("Arial", 12, "bold"), justify=tk.RIGHT)
        text_block1.pack(fill=tk.X, expand=True)

        # Создание второй метки с направлением потока слева направо
        text_block2 = tk.Label(stack_panel, text="LeftToRight")
        text_block2.configure(font=("Arial", 12, "bold"), justify=tk.LEFT)
        text_block2.pack(fill=tk.X, expand=True)

if __name__ == "__main__":
    window = MainWindow()
    window.mainloop()
```
***
**Вот что получилось: (I don't know how to fix that)**
***
![](./img/scr8.png)
***

**Позиционирование контента**
***
```
import tkinter as tk

class MainWindow(tk.Tk):
    def __init__(self):
        super().__init__()

        self.title("Иванов Валера И-21")
        self.geometry("400x300")

        # Создание панели стека
        stack_panel = tk.Frame(self)
        stack_panel.pack(fill=tk.BOTH, expand=True)

        # Создание трех кнопок с различным выравниванием текста
        tk.Button(stack_panel, text="Left", height=90, width=500, justify=tk.LEFT).pack(fill=tk.X, expand=True)
        tk.Button(stack_panel, text="Right", height=90, width=500, justify=tk.RIGHT).pack(fill=tk.X, expand=True)
        tk.Button(stack_panel, text="Center", height=90, width=500, justify=tk.CENTER).pack(fill=tk.X, expand=True)

if __name__ == "__main__":
    window = MainWindow()
    window.mainloop()
```
***

**Вот что получилось: (The same problem)**
***
![](./img/scr9.png)
***

**CheckBox**
***
```
import tkinter as tk

class MainWindow(tk.Tk):
    def __init__(self):
        super().__init__()

        self.title("Иванов Валера И-21")
        self.geometry("400x300")

        # Создание панели стека
        stack_panel = tk.Frame(self)
        stack_panel.pack(fill=tk.BOTH, expand=True)

        # Создание трех флажков с различными состояниями
        tk.Checkbutton(stack_panel, text="Неотмечено", height=5, variable=tk.BooleanVar(value=False)).pack()
        tk.Checkbutton(stack_panel, text="Отмечено", height=5, variable=tk.BooleanVar(value=True)).pack()
        tk.Checkbutton(stack_panel, text="Неопределено", height=5, variable=tk.BooleanVar(value=None)).pack()

if __name__ == "__main__":
    window = MainWindow()
    window.mainloop()
```
***
**Вот что получилось:**
***
![](./img/scr10.png)
***

**RadioButton**
***
```
import tkinter as tk

class MainWindow(tk.Tk):
    def __init__(self):
        super().__init__()

        self.title("Иванов Валера И-21")
        self.geometry("300x150")

        # Создание панели стека
        stack_panel = tk.Frame(self)
        stack_panel.pack(fill=tk.BOTH, expand=True)

        # Создание группы радиокнопок "Языки"
        language_group = tk.StringVar()
        tk.Radiobutton(stack_panel, text="C#", variable=language_group, value="C#").pack()
        tk.Radiobutton(stack_panel, text="Python", variable=language_group, value="Python").pack()
        tk.Radiobutton(stack_panel, text="C++", variable=language_group, value="C++").pack()

        # Создание группы радиокнопок "Фреймворки"
        technology_group = tk.StringVar()
        tk.Radiobutton(stack_panel, text="Kivy", variable=technology_group, value="WPF").pack()
        tk.Radiobutton(stack_panel, text="WinForms", variable=technology_group, value="WinForms").pack()
        tk.Radiobutton(stack_panel, text="Django", variable=technology_group, value="ASP.NET").pack()

if __name__ == "__main__":
    window = MainWindow()
    window.mainloop()
```
***
**Вот что получилось:**
***
![](./img/scr11.png)
***

**Password**
***
```
import tkinter as tk

class MainWindow(tk.Tk):
    def __init__(self):
        super().__init__()

        self.title("Иванов Валера И-21")
        self.geometry("300x150")

        # Создание панели стека
        stack_panel = tk.Frame(self)
        stack_panel.pack(fill=tk.BOTH, expand=True)

        # Создание двух полей ввода пароля
        tk.Entry(stack_panel, show="*").pack()
        tk.Entry(stack_panel).pack()

if __name__ == "__main__":
    window = MainWindow()
    window.mainloop()
```
***
**Вот что получилось:**
***
![](./img/scr12.png)
***

**List**
***
```
import tkinter as tk

class MainWindow(tk.Tk):
    def __init__(self):
        super().__init__()

        self.title("Иванов Валера И-21")
        self.geometry("300x200")

        # Создание сетки
        grid = tk.Frame(self)
        grid.pack(fill=tk.BOTH, expand=True)

        # Создание списка
        list_box = tk.Listbox(grid)
        list_box.insert(tk.END, "Lumia 950")
        list_box.insert(tk.END, "iPhone 6S Plus")
        list_box.insert(tk.END, "Xiaomi Mi5")
        list_box.insert(tk.END, "Nexus 5X")
        list_box.pack(fill=tk.BOTH, expand=True)

if __name__ == "__main__":
    window = MainWindow()
    window.mainloop()
```
***
**Вот что получилось:**
***
![](./img/scr13.png)
***

**ComboBox**
***
```
import tkinter as tk

import tkinter.ttk as ttk

class MainWindow(tk.Tk):
    def __init__(self):
        super().__init__()

        self.title("Иванов Валера И-21")
        self.geometry("300x150")

        # Создание выпадающего списка
        self.phones_list = ttk.Combobox(self, values=["LG Nexus 5X", "Huawai Nexus 6P", "iPhone 6S", "iPhone 6S Plus", "Microsoft Lumia 950"])
        self.phones_list.pack()

if __name__ == "__main__":
    window = MainWindow()
    window.mainloop()
```
***
**Вот что получилось:**
***
![](./img/scr14.png)
***

**DataGrid**
***
```
import tkinter as tk

from tkinter import ttk

class MainWindow(tk.Tk):
    def __init__(self):
        super().__init__()

        self.title("MainWindow")
        self.geometry("300x300")

        self.phones_grid = ttk.Treeview(self)
        self.phones_grid["columns"] = ("title", "company", "price")
        self.phones_grid.heading("#0", text="Модель")
        self.phones_grid.heading("title", text="Название")
        self.phones_grid.heading("company", text="Компания")
        self.phones_grid.heading("price", text="Цена")

        self.phones_grid.insert("", tk.END, text="iPhone 6S", values=("iPhone 6S", "Apple", "54990"))
        self.phones_grid.insert("", tk.END, text="Lumia 950", values=("Lumia 950", "Microsoft", "39990"))
        self.phones_grid.insert("", tk.END, text="Nexus 5X", values=("Nexus 5X", "Google", "29990"))

        self.phones_grid.pack()

if __name__ == "__main__":
    window = MainWindow()
    window.mainloop()
```
***
**Вот что получилось:**
***
![](./img/scr15.png)
***