2017-07-25 6 views
6

Ich habe ist, um eine grundlegende UI Aufbau Tkinter verwenden, und ich bemerkte, dass cmd + ein (oder alle Befehl auswählen) nicht aktiviert ist.cmd + a nicht in tkinter Eintrag Arbeits

Wie aktiviere ich alle Tastaturkürzel in tkinter, besonders für Eingabefelder.

Dies ist mein Code:

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

Antwort

3

@Goyo hat bereits Ihre Frage beantwortet. Ich möchte meinen Beitrag teilen, da ich kein Interesse daran sehe, den Text des Eintrags-Widget-Textes auszuwählen und nichts anderes damit zu tun. So werde ich Ihnen eine schmutzige MCVE zur Verfügung stellen, um zu zeigen, wie Sie den ausgewählten Text verwenden: a) entweder Sie löschen es oder b) Sie werden es kopieren.

Für a), die folgende Funktion wird die Arbeit machen:

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

Es wird unter der Bedingung arbeiten Sie die entsprechenden Ereignisse, die von der Funktion der Name für den Eintrag Widget beschrieben binden:

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

Für b), können Sie diese Funktion verwenden:

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

und binden das Delete Ereignis zum Eintrag widget:

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

ich diesen MCVE anprobiert Ubuntu und es funktioniert:

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

Wenn tkinter definieren nicht die shorcuts Sie Sie Ihre eigenen durch Bindung Tastaturereignisse definieren.

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() 

Ich denke Command der richtige Präfix für die cmd-Taste ist, aber ich habe nicht einen Mac zu testen. In Windows bindet es sich an den Kontrollschlüssel.

+0

eher '' (getestet auf Ubuntu) –

+2

@ BillalBEGUERADJ Ich vermute cmd + a ist für Mac. '' und '' scheinen in Windows genauso zu funktionieren, aber ich bin nicht sicher, wie es in Mac funktioniert. Ratschläge in den Interwebs schlagen vor, '' zu verwenden. – Goyo

+0

Sie haben Recht, es kann der Fall sein. –

Verwandte Themen