Cursores Tkinter

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 cursorparâmetro para alterar o cursor da janela raiz ou de um widget.

Deixe um comentário

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