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.Frame
classe:
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'] = 5
Linguagem 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
Button
widgets. 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:
O programa a seguir ilustra como criar a Replace
janela 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 tkinter
módulo e tkinter.ttk
o submódulo:
import tkinter as tk
from tkinter import ttk
Linguagem 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.