Quadro Tkinter

Resumo : neste tutorial, você aprenderá sobre o Tkinter Frame e como manipular seus atributos, incluindo tamanhos, preenchimentos e bordas.

Introdução ao widget Tkinter Frame

Um quadro é um widget exibido como um retângulo simples. Normalmente, você usa um quadro para organizar outros widgets tanto visualmente quanto no nível de codificação.

Para criar um quadro, você usa a ttk.Frameclasse:

frame = ttk.Frame(master, **options)Linguagem de código:  Python  ( python )

Um quadro possui vários objetos de configuração que determinam sua aparência.

borderwidth Especifique a largura da borda do quadro. O padrão é zero
class_ Definir o nome da classe do widget
cursor Alterar a aparência do cursor quando o cursor do mouse estiver sobre o quadro
height Defina a altura do quadro.
padding Para criar preenchimento dentro do quadro e fora dos widgets contidos.
relief Especifique o estilo de relevo da borda. Para torná-lo eficaz, você também precisa definir o arquivo borderwidth.
style Especifique o nome do estilo personalizado do widget personalizado
takefocus Um valor booleano especifica se o quadro é visitado durante a passagem do foco. Por padrão, é False. Portanto, o widget de quadro não aceita foco.
width Defina a largura do quadro.

Tamanho do quadro

O tamanho de um quadro é determinado pelo tamanho e layout dos widgets que ele contém. Além disso, você pode especificar explicitamente a altura e a largura do quadro ao criá-lo:

frame = ttk.Frame(master, height, width)Linguagem de código:  Python  ( python )

Preenchimento

O preenchimento permite adicionar espaço extra dentro do quadro e fora dos widgets contidos. Os preenchimentos estão em pixels.

Para especificar o preenchimento para cada lado do quadro separadamente, use o seguinte:

frame['padding'] = (left, top, right, bottom)Linguagem de código:  Python  ( python )

Por exemplo:

frame['padding'] = (5,10,5,10)Linguagem de código:  Python  ( python )

Ou você pode especificar preenchimentos para esquerda, direita e superior e inferior da seguinte maneira:

frame['padding'] = (5, 10)Linguagem de código:  Python  ( python )

Neste exemplo, os preenchimentos esquerdo e direito são 5 e os preenchimentos superior e inferior são 10. Se os preenchimentos de todos os lados forem iguais, você pode especificar o preenchimento assim:

frame['padding'] = 5Linguagem de código:  Python  ( python )

Bordas do quadro

Por padrão, a largura da borda de um quadro é zero. Em outras palavras, o quadro não tem borda.

Para definir uma borda para um quadro, você precisa definir a largura e o estilo da borda.

A largura da borda de um quadro está em pixels. O estilo da borda de uma moldura pode ser plano, ranhurado, elevado, cume, sólido ou afundado. O estilo de borda padrão de um quadro é plano.

O exemplo a seguir define a largura da borda do quadro como 5 pixels e o estilo da borda do quadro como sunken.

frame['borderwidth'] = 5
frame['relief'] = 'sunken'Linguagem de código:  Python  ( python )

A imagem a seguir ilustra os estilos de borda de um quadro:

Exemplo de quadro Tkinter

Vamos criar a seguinte janela Substituir, bastante comum em editores de texto como o Bloco de Notas:

Para deixar os widgets mais organizados, você pode dividir a janela em dois quadros:

  • O quadro esquerdo consiste nos widgets Label , Entry e Checkbox . O quadro esquerdo usará o gerenciador de geometria da grade que possui duas colunas e quatro linhas.
  • O quadro direito consiste nos Buttonwidgets. O quadro direito também usará o gerenciador de geometria da grade que possui quatro linhas e uma coluna.

Para colocar os quadros esquerdo e direito na janela, você pode usar o gerenciador de geometria de grade que possui uma linha e duas colunas:

Grade de quadros Tkinter

O programa a seguir ilustra como criar a Replacejanela acima:

import tkinter as tk
from tkinter import TclError, ttk


def create_input_frame(container):

    frame = ttk.Frame(container)

    # grid layout for the input frame
    frame.columnconfigure(0, weight=1)
    frame.columnconfigure(0, weight=3)

    # Find what
    ttk.Label(frame, text='Find what:').grid(column=0, row=0, sticky=tk.W)
    keyword = ttk.Entry(frame, width=30)
    keyword.focus()
    keyword.grid(column=1, row=0, sticky=tk.W)

    # Replace with:
    ttk.Label(frame, text='Replace with:').grid(column=0, row=1, sticky=tk.W)
    replacement = ttk.Entry(frame, width=30)
    replacement.grid(column=1, row=1, sticky=tk.W)

    # Match Case checkbox
    match_case = tk.StringVar()
    match_case_check = ttk.Checkbutton(
        frame,
        text='Match case',
        variable=match_case,
        command=lambda: print(match_case.get()))
    match_case_check.grid(column=0, row=2, sticky=tk.W)

    # Wrap Around checkbox
    wrap_around = tk.StringVar()
    wrap_around_check = ttk.Checkbutton(
        frame,
        variable=wrap_around,
        text='Wrap around',
        command=lambda: print(wrap_around.get()))
    wrap_around_check.grid(column=0, row=3, sticky=tk.W)

    for widget in frame.winfo_children():
        widget.grid(padx=5, pady=5)

    return frame


def create_button_frame(container):
    frame = ttk.Frame(container)

    frame.columnconfigure(0, weight=1)

    ttk.Button(frame, text='Find Next').grid(column=0, row=0)
    ttk.Button(frame, text='Replace').grid(column=0, row=1)
    ttk.Button(frame, text='Replace All').grid(column=0, row=2)
    ttk.Button(frame, text='Cancel').grid(column=0, row=3)

    for widget in frame.winfo_children():
        widget.grid(padx=5, pady=5)

    return frame


def create_main_window():
    root = tk.Tk()
    root.title('Replace')
    root.resizable(0, 0)
    try:
        # windows only (remove the minimize/maximize button)
        root.attributes('-toolwindow', True)
    except TclError:
        print('Not supported on your platform')

    # layout on the root window
    root.columnconfigure(0, weight=4)
    root.columnconfigure(1, weight=1)

    input_frame = create_input_frame(root)
    input_frame.grid(column=0, row=0)

    button_frame = create_button_frame(root)
    button_frame.grid(column=1, row=0)

    root.mainloop()


if __name__ == "__main__":
    create_main_window()
Linguagem de código:  Python  ( python )

Como funciona.

Primeiro, importe o tkintermódulo e tkinter.ttko submódulo:

import tkinter as tk
from tkinter import ttkLinguagem de código:  JavaScript  ( javascript )

Segundo, crie o quadro esquerdo na create_input_frame()função. O código a seguir adiciona preenchimentos a todos os widgets dentro do input_frame:

for widget in frame.winfo_children():
    widget.grid(padx=0, pady=5)

Terceiro, crie o quadro certo na função create_button_frame().

Quarto, crie a janela raiz na create_main_window()função. O código a seguir remove os botões minimizar/maximizar da janela:

root.attributes('-toolwindow', True)Linguagem de código:  PHP  ( php )

Observe que este código só funciona no Windows.

Na create_main_window()função, também criamos o quadro esquerdo e o quadro direito e usamos o gerenciador de geometria da grade para organizá-los na janela raiz.

Finalmente, chame a create_main_window()função no if __name__ == "__main__":bloco.

Resumo

  • A ttk.Frameé um widget retangular simples que pode conter outros widgets.
  • Os quadros Tkinter são usados ​​para organizar as interfaces do usuário visualmente e no nível de codificação.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *