2017-04-03 27 views
1

我剛開始創建一個簡單的文本編輯器。我已經將幾個函數綁定到了某些按鍵,現在我試圖添加一個在按下回車鍵時操作的函數。目的是刪除輸入到文本小部件中的最後一個字符。這裏是我的代碼:使用綁定函數從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() 

我遇到的問題是,按刪除刪除最後輸入的字符時,什麼都不會被刪除。任何幫助讚賞。附:我試圖添加一個savefile函數來保存文本到一個文件,但它不工作,如果任何人都可以在那裏幫助,它將再次被讚賞:)

+0

首先閱讀此:http://stackoverflow.com/a/11542200/7432 –

回答

0

我沒有嘗試運行你的代碼知道因爲我沒時間了。但是,首先,您不應該在同一個Toplevel中使用packplace幾何管理器,您應該只使用一個。其次,在您的savefile函數中,您沒有打開該文件,因此您的file變量只是一個字符串。你應該使用類似file = open(file)