2017-01-05 10 views
0

Entryウィジェットのtkinter pythonでclick + drug leftマウスを使用して、ブロックのようなすべてのテキストを選択する方法。ここCtrl + aすべてのエントリウィジェットを選択するtkinter python

e1 = tk.Entry(bop, width = 50, font = "Helvetica 13") 
e1.grid(row=1,column=1, padx=15, pady=15) 
e1.bind_class("Entry","<Control-a>", select_all(e1)) 

select_all()の関数である:

def select_all(e): 
    a = e.select_range(0,tk.END) 
+0

'bind'は関数名(コールバック)を期待します - それは'() 'と引数なしであることを意味します。 arggで関数を使用する引数なしで関数を作成するか、lambda:bind(...、lambda:select_all(e1)) – furas

+0

BTW: 'Entry'はすべてのテキストを取得するためのメソッド' get() 'を持っています。 – furas

答えて

4

()と引数(コールバック)することなく、ファイル名を期待SO

import tkinter as tk 

def callback(event): 
    print('e.get():', e.get()) 
    # or more universal 
    print('event.widget.get():', event.widget.get()) 
    # select text after 50ms 
    root.after(50, select_all, event.widget) 

def select_all(widget): 
    # select text 
    widget.select_range(0, 'end') 
    # move cursor to the end 
    widget.icursor('end') 

root = tk.Tk() 

e = tk.Entry(root) 
e.pack() 
e.bind('<Control-a>', callback) 

root.mainloop() 

bindに非常に多くの類似した例がありました。しかし、bindもこの関数を1つの引数eventで実行し、この関数を実行したエントリにアクセスできるようにして、event.widgetを使用して、多くの異なるエントリで使用することができます。そして最後にEntryには.get()があり、すべてのテキストを取得します。


EDIT:

ため解放したキーの後<Control-a>選択は私が50msの後に選択を実行するためにafter()を使用して削除されます。すべてのテキストを選択します(ただし、カーソルは先頭に移動します)。最後までカーソルを移動します。 (上記のコードを参照してください)


EDIT:

私はReleaseとの正しい組み合わせを見つけることができませんでしたが、それは<Control-KeyRelease-a>にする必要があり、今では必要ありません前にafter()

import tkinter as tk 

def callback(event): 
    print('e.get():', e.get()) 
    # or more universal 
    print('event.widget.get():', event.widget.get()) 

    # select text 
    event.widget.select_range(0, 'end') 
    # move cursor to the end 
    event.widget.icursor('end') 

root = tk.Tk() 

e = tk.Entry(root) 
e.pack() 
e.bind('<Control-KeyRelease-a>', callback) 

root.mainloop() 
+0

あなたの例は役に立ちますが、質問に完全には答えていません。 'select all"機能を実際に実行する 'callback'メソッドを変更できますか? –

+0

私は 'select_all'(@BryanOakley)を追加しました – furas

+0

' Control-KeyRelease-a> 'を見つけましたが、' after() 'は不要です – furas

関連する問題