2017-04-03 8 views
1

私はちょうど簡単なテキストエディタを作成し始めました。私はすでにいくつかのキー押下にいくつかの関数をバインドしていますが、現在、Returnキーを押しながら操作する関数を追加しようとしています。目的は、テキストウィジェットに最後に入力された文字を削除することです。私のコードは次のとおりです:バインド機能を使用してPythonのテキストウィジェットから文字を削除

from tkinter import * 
from tkinter import filedialog 
import os 

root = Tk() 
root.geometry('{}x{}'.format(500, 500)) 

def addchar(event): 
    w.insert(END, event.char) 

def deletechar(event): 
    current = w.get() 
    new = current[:-1] 
    w.delete(0,END) 
    w.insert(END, new) 

def savefile(event): 
    file = filedialog.asksaveasfilename(defaultextension=".txt") 
    if file is None: 
     return 
    text2save = str(w.get()) 
    file.append(data) 
    file.close() 


w = Entry(root, bd=1) 
w.pack() 
w.place(x=0, y=0, width=500) 
root.bind("<Key>", addchar) 
root.bind("<BackSpace>", deletechar) 
root.bind("<Control-s>", savefile) 
root.bind("<Return>", newline) 

root.mainloop() 

問題は、最後に入力した文字を削除するために削除を押しても削除されないことです。どんな助けもありがたい。 P.S. Iveはテキストをファイルに保存するためにsavefile関数を追加しようとしましたが、誰かが助けてもらえればうまくいきません:)

+0

これを読んで始めてください:http://stackoverflow.com/a/11542200/7432 –

答えて

0

私はコードを正しく実行しようとしませんでした。時間がなくなっています。しかし、まず、にpackplaceジオメトリマネージャーを使用しないでください。次に、savefile関数ではファイルを開かなかったので、file変数は文字列にすぎません。 file = open(file)のようなものを使用してください。

関連する問題