Resumo : neste tutorial você aprenderá como configurar os cursores para widgets no aplicativo Tkinter.
Alterando o cursor da janela raiz
A janela raiz possui apenas dois cursores:
- Cursor normal
- Cursor ocupado
O cursor Normal tem o valor ""
enquanto o cursor ocupado tem o valor "watch"
.
O programa a seguir mostra como alterar o cursor da janela raiz de normal para ocupado:
import tkinter as tk
root = tk.Tk()
root.geometry("300x300")
root.config(cursor="watch")
root.mainloop()
Linguagem de código: Python ( python )
Como funciona.
- Primeiro, defina a largura e a altura das janelas raiz para 300×300.
- Segundo, mude o cursor para ocupado usando o parâmetro cursor.
Se quiser alterar o cursor para uma área da janela raiz, você pode usar o evento <Motion> e rastrear a coordenada x (e/ou y) do cursor. Por exemplo:
import tkinter as tk
root = tk.Tk()
root.geometry("300x300")
def change_cursor(event):
if event.x in range(100, 300):
root.config(cursor="watch")
else:
root.config(cursor="")
root.bind("<Motion>", change_cursor)
root.mainloop()
Linguagem de código: Python ( python )
Neste exemplo, o cursor muda para ocupado quando o mouse inicia nas coordenadas x de 100 a 300.
Alterando o cursor para widgets
Todos os widgets ttk possuem o parâmetro cursor que permite alterar o cursor quando o mouse passa sobre eles.
Por exemplo, se quiser alterar o cursor de um botão , você pode definir o nome do cursor usando o parâmetro cursor da seguinte forma:
from tkinter import ttk
#...
button = ttk.Button(cursor=cursor_name)
Linguagem de código: Python ( python )
O nome do cursor pode ser um dos seguintes valores:
- seta
- based_arrow_down
- based_arrow_up
- barco
- besteira
- Canto inferior esquerdo
- canto inferior direito
- lado inferior
- bottom_tee
- caixa_espiral
- centro_ptr
- círculo
- relógio
- Caneca de café
- cruzar
- cross_reverse
- mira
- diamante_cruz
- ponto
- caixa de pontos
- seta_dupla
- rascunho_grande
- rascunho_small
- caixa_drapeada
- intercâmbio
- flor
- devorador
- gomoso
- mão1
- mão2
- coração
- ícone
- Cruz de Ferro
- esquerda_ptr
- lado esquerdo
- left_tee
- botão esquerdo
- ll_ângulo
- lr_ângulo
- homem
- botão do meio
- rato
- lápis
- pirata
- mais
- question_arrow
- direita_ptr
- lado direito
- direito_tee
- botão direito
- rtl_logo
- barco a vela
- sb_down_arrow
- sb_h_double_arrow
- sb_left_arrow
- sb_right_arrow
- sb_up_arrow
- sb_v_double_arrow
- transporte
- dimensionamento
- aranha
- lata de spray
- estrela
- alvo
- tcross
- seta superior_esquerda
- canto superior esquerdo
- canto superior direito
- lado superior
- top_tee
- caminhada
- ul_ângulo
- guarda-chuva
- ur_angle
- assistir
- termo x
- X_cursor
Para alterar o cursor da janela raiz, você pode:
- Primeiro, crie um novo Frame .
- Segundo, coloque-o na janela raiz e expanda-o 100%.
- Terceiro, coloque o cursor no quadro.
O programa a seguir permite alterar o cursor selecionando-o em uma caixa de combinação :
from tkinter import ttk
import tkinter as tk
root = tk.Tk()
# config the root window
root.geometry('600x400')
root.resizable(False, False)
root.title('Tkinter Cursors')
frame = ttk.Frame(root)
# label
label = ttk.Label(frame, text="Cursor:")
label.pack(fill=tk.X, padx=5, pady=5)
# cursor list
selected_cursor = tk.StringVar()
cursor_list = ttk.Combobox(frame, textvariable=selected_cursor, cursor='arrow')
cursors = ['arrow', 'man', 'based_arrow_down', 'middlebutton', 'based_arrow_up', 'mouse', 'boat', 'pencil', 'bogosity', 'pirate', 'bottom_left_corner', 'plus', 'bottom_right_corner', 'question_arrow', 'bottom_side', 'right_ptr', 'bottom_tee', 'right_side', 'box_spiral', 'right_tee', 'center_ptr', 'rightbutton', 'circle', 'rtl_logo', 'clock', 'sailboat', 'coffee_mug', 'sb_down_arrow', 'cross', 'sb_h_double_arrow', 'cross_reverse', 'sb_left_arrow', 'crosshair', 'sb_right_arrow', 'diamond_cross',
'sb_up_arrow', 'dot', 'sb_v_double_arrow', 'dotbox', 'shuttle', 'double_arrow', 'sizing', 'draft_large', 'spider', 'draft_small', 'spraycan', 'draped_box', 'star', 'exchange', 'target', 'fleur', 'tcross', 'gobbler', 'top_left_arrow', 'gumby', 'top_left_corner', 'hand1', 'top_right_corner', 'hand2', 'top_side', 'heart', 'top_tee', 'icon', 'trek', 'iron_cross', 'ul_angle', 'left_ptr', 'umbrella', 'left_side', 'ur_angle', 'left_tee', 'watch', 'leftbutton', 'xterm', 'll_angle', 'X_cursor', 'lr_angle']
cursor_list['values'] = cursors
cursor_list['state'] = 'readonly'
cursor_list.pack(fill=tk.X, padx=5, pady=5)
frame.pack(expand=True, fill=tk.BOTH)
# bind the selected value changes
def cursor_changed(event):
frame.config(cursor=selected_cursor.get())
cursor_list.bind('<<ComboboxSelected>>', cursor_changed)
root.mainloop()
Linguagem de código: Python ( python )
Resumo
- A janela raiz possui apenas dois cursores: normal (
""
) e ocupado ("watch"
). - O widget possui muitos cursores com nomes fixos.
- Use o
cursor
parâmetro para alterar o cursor da janela raiz ou de um widget.