2017-07-25 24 views
6

ja jest budowanie podstawowego interfejsu użytkownika przy użyciu Tkinter, i zauważyłem, że cmd + (lub polecenie Zaznacz wszystko) nie jest włączona.cmd + a nie pracuje w pozycji tkinter

Jak włączyć wszystkie skróty w urządzeniu Tkinter, szczególnie w polu tekstowym wprowadzania tekstu.

To jest mój kod:

entry1 = ttk.Entry(root, width = 60) 
entry1.pack() 

Odpowiedz

3

@Goyo już odpowiedział na twoje pytanie. Chcę podzielić się moim wkładem, ponieważ nie widzę zainteresowania wybieraniem tekstu widżetu wpisu i nie robieniem z nim nic innego. Tak więc zamierzam dostarczyć ci brudne MCVE, aby pokazać, jak zamierzasz użyć zaznaczonego tekstu: a) albo go usuniesz, albo b) skopiujesz.

Dla a), poniższa funkcja będzie wykonać zadanie:

def select_text_or_select_and_copy_text(e): 
    e.widget.select_range(0, 'end') 

będzie działać pod warunkiem powiązać odpowiednie zdarzenia opisane przez nazwa funkcji do widgetu wpis:

entry.bind('<Control-a>', select_text_or_select_and_copy_text) 
entry.bind('<Control-c>', select_text_or_select_and_copy_text) 

Dla b), można użyć tej funkcji:

def delete_text(e): 
    e.widget.delete('0', 'end') 

i powiązać zdarzenie Delete do widgetu wpis:

entry.bind('<Delete>', delete_text) 

Próbowałem to MCVE na Ubuntu i to działa:

import tkinter as tk 
import tkinter.ttk as ttk 


def select_text_or_select_and_copy_text(e): 
    e.widget.select_range(0, 'end')  

def delete_text(e): 
    e.widget.delete('0', 'end') 


root = tk.Tk() 

entry = ttk.Entry(root) 
entry.pack() 

entry.bind('<Control-a>', select_text_or_select_and_copy_text) 
entry.bind('<Control-c>', select_text_or_select_and_copy_text) 
entry.bind('<Delete>', delete_text) 

root.mainloop() 
7

Jeśli tkinter nie definiuje shorcuts chcesz, możesz zdefiniować własną rękę poprzez wiązanie zdarzenia klawiatury.

import tkinter as tk 
import tkinter.ttk as ttk 

def callback(ev): 
    ev.widget.select_range(0, 'end') 

root = tk.Tk() 
entry = ttk.Entry(root) 
entry.pack() 
entry.bind('<Command-a>', callback) 
root.mainloop() 

myślę Command jest poprawny przedrostek klucza cmd ale nie mam mac do testowania. W oknach wiąże się z klawiszem kontrolnym.

+0

Raczej '' (testowane na Ubuntu) –

+2

@ BillalBEGUERADJ Zgaduję, że cmd + a jest dla mac. '' i '' wydają się działać tak samo w Windows, ale nie jestem pewien jak to działa w mac. Porady znalezione w interwebs sugerują użycie ''. – Goyo

+0

Masz rację, może tak być. –