# Interfaces Gráficas de Usuário com Tk

Tk/Tcl tem sido parte integrante do Python. Ele fornece um kit de ferramentas de janela robusto e independente de plataforma, que está disponível para programadores Python usando o pacote `tkinter` e sua extensão, o módulo `tkinter.ttk`.

O pacote `tkinter` é uma fina camada orientada a objetos no topo do Tcl/Tk. Para usar `tkinter`, você não precisa escrever o código Tcl, mas precisará consultar a documentação do Tk e, ocasionalmente, a documentação do Tcl. `tkinter` é um conjunto de envólucros que implementam os widgets Tk como classes Python.

As principais virtudes do `tkinter` são que ele é rápido, e que geralmente vem junto com o Python. Embora sua documentação padrão seja fraca, um bom material está disponível, que inclui: referências, tutoriais, um livro e outros. `tkinter` também é famoso por ter uma aparência desatualizada, que foi amplamente melhorada no Tk 8.5. No entanto, existem muitas outras bibliotecas GUI nas quais você pode estar interessado. A wiki do Python lista várias frameworks e ferramentas GUI alternativas.

- `tkinter` — Interface Python para Tcl/Tk
  - Arquitetura
  - Módulos Tkinter
    - `Tk`
      - `tk`
      - `master`
      - `children`
    - `Tcl()`
  - Preservador de vida Tkinter
    - Um programa Olá Mundo
    - Conceitos importantes do Tk
    - Entendendo como Tkinter envolve Tcl/Tk
    - Como é que eu…? Que opção faz…?
    - Navegando no Manual de Referência Tcl/Tk
  - Modelo de threading
  - Referência Útil
    - Opções de Definição
    - O Empacotador
    - Opções do Empacotador
    - Acoplando Variáveis de Widgets
    - O Gerenciador de Janela
    - Opções de Tipos de Dados do Tk
    - Ligações e Eventos
    - O Parâmetro index
    - Imagens
  - Tratadores de arquivos
    - `createfilehandler()`
    - `deletefilehandler()`
    - `READABLE`
    - `WRITABLE`
    - `EXCEPTION`
- `tkinter.colorchooser` — Diálogo de escolha de cor
  - `Chooser`
  - `askcolor()`
- `tkinter.font` — Invólucro de fontes Tkinter
  - `NORMAL`
  - `BOLD`
  - `ITALIC`
  - `ROMAN`
  - `Font`
    - `actual()`
    - `cget()`
    - `config()`
    - `copy()`
    - `measure()`
    - `metrics()`
  - `families()`
  - `names()`
  - `nametofont()`
- Diálogos Tkinter
  - `tkinter.simpledialog` — Diálogos de entrada padrão do Tkinter
    - `askfloat()`
    - `askinteger()`
    - `askstring()`
    - `Dialog`
      - `body()`
      - `buttonbox()`
  - `tkinter.filedialog` — Caixas de diálogo de seleção de arquivo
    - Caixas de diálogo nativos de carregar/salvar
      - `askopenfile()`
      - `askopenfiles()`
      - `asksaveasfile()`
      - `askopenfilename()`
      - `askopenfilenames()`
      - `asksaveasfilename()`
      - `askdirectory()`
      - `Open`
      - `SaveAs`
      - `Directory`
      - `FileDialog`
        - `cancel_command()`
        - `dirs_double_event()`
        - `dirs_select_event()`
        - `files_double_event()`
        - `files_select_event()`
        - `filter_command()`
        - `get_filter()`
        - `get_selection()`
        - `go()`
        - `ok_event()`
        - `quit()`
        - `set_filter()`
        - `set_selection()`
      - `LoadFileDialog`
        - `ok_command()`
      - `SaveFileDialog`
        - `ok_command()`
  - `tkinter.commondialog` — Modelos de janela de diálogo
    - `Dialog`
      - `show()`
- `tkinter.messagebox` — Prompts de mensagem do Tkinter
  - `Message`
    - `show()`
  - `showinfo()`
  - `showwarning()`
  - `showerror()`
  - `askquestion()`
  - `askokcancel()`
  - `askretrycancel()`
  - `askyesno()`
  - `askyesnocancel()`
  - `ABORT`
  - `RETRY`
  - `IGNORE`
  - `OK`
  - `CANCEL`
  - `YES`
  - `NO`
  - `ABORTRETRYIGNORE`
  - `OKCANCEL`
  - `RETRYCANCEL`
  - `YESNO`
  - `YESNOCANCEL`
  - `ERROR`
  - `INFO`
  - `QUESTION`
  - `WARNING`
- `tkinter.scrolledtext` — Widget de texto de rolado
  - `ScrolledText`
    - `frame`
    - `vbar`
- `tkinter.dnd` — Suporte para arrastar e soltar
  - `DndHandler`
    - `cancel()`
    - `finish()`
    - `on_motion()`
    - `on_release()`
  - `dnd_start()`
- `tkinter.ttk` — Widgets temáticos do Tk
  - Usando Ttk
  - Widgets Ttk
  - Widget
    - Opções padrão
    - Opções de ferramenta rolável
    - Opções de rótulo
    - Opções de compatibilidade
    - Estados de Widget
    - ttk.Widget
      - `Widget`
        - `identify()`
        - `instate()`
        - `state()`
  - Combobox
    - Opções
    - Eventos virtuais
    - ttk.Combobox
      - `Combobox`
        - `current()`
        - `get()`
        - `set()`
  - Spinbox
    - Opções
    - Eventos virtuais
    - ttk.Spinbox
      - `Spinbox`
        - `get()`
        - `set()`
  - Notebook
    - Opções
    - Tab Options
    - Tab Identifiers
    - Virtual Events
    - ttk.Notebook
      - `Notebook`
        - `add()`
        - `forget()`
        - `hide()`
        - `identify()`
        - `index()`
        - `insert()`
        - `select()`
        - `tab()`
        - `tabs()`
        - `enable_traversal()`
  - Progressbar
    - Opções
    - ttk.Progressbar
      - `Progressbar`
        - `start()`
        - `step()`
        - `stop()`
  - Separator
    - Opções
  - Sizegrip
    - Platform-specific notes
    - Bugs
  - Treeview
    - Opções
    - Item Options
    - Tag Options
    - Column Identifiers
    - Virtual Events
    - ttk.Treeview
      - `Treeview`
        - `bbox()`
        - `get_children()`
        - `set_children()`
        - `column()`
        - `delete()`
        - `detach()`
        - `exists()`
        - `focus()`
        - `heading()`
        - `identify()`
        - `identify_row()`
        - `identify_column()`
        - `identify_region()`
        - `identify_element()`
        - `index()`
        - `insert()`
        - `item()`
        - `move()`
        - `next()`
        - `parent()`
        - `prev()`
        - `reattach()`
        - `see()`
        - `selection()`
        - `selection_set()`
        - `selection_add()`
        - `selection_remove()`
        - `selection_toggle()`
        - `set()`
        - `tag_bind()`
        - `tag_configure()`
        - `tag_has()`
        - `xview()`
        - `yview()`
  - Ttk Styling
    - `Style`
      - `configure()`
      - `map()`
      - `lookup()`
      - `layout()`
      - `element_create()`
      - `element_names()`
      - `element_options()`
      - `theme_create()`
      - `theme_settings()`
      - `theme_names()`
      - `theme_use()`
    - Layouts
- IDLE
  - Menus
    - Menu Arquivo (Console e Editor)
    - Edit menu (Shell and Editor)
    - Format menu (Editor window only)
    - Run menu (Editor window only)
    - Shell menu (Shell window only)
    - Debug menu (Shell window only)
    - Options menu (Shell and Editor)
    - Window menu (Shell and Editor)
    - Help menu (Shell and Editor)
    - Context menus
  - Editing and Navigation
    - Editor windows
    - Teclas de atalho
    - Automatic indentation
    - Busca e Substituição
    - Completions
    - Calltips
    - Code Context
    - Shell window
    - Text colors
  - Startup and Code Execution
    - Uso na linha de comando
    - Startup failure
    - Running user code
    - User output in Shell
    - Developing tkinter applications
    - Running without a subprocess
  - Help and Preferences
    - Help sources
    - Setting preferences
    - IDLE on macOS
    - Extensions
  - idlelib