2010-09-02 31 views
0

每當此代碼重新打開時,插入光標移動一行較低,我該如何阻止?幫助,插入光標每次移動一行!

import Tkinter,pickle 
class Note(Tkinter.Tk): 
    def __init__(self,parent): 
     Tkinter.Tk.__init__(self,parent) 
     self.parent = parent 
     self.Main() 
     self.load_data() 
     self.protocol("WM_DELETE_WINDOW", self.save_data) 
    def Main(self): 
     self.s1 = Tkinter.Scrollbar(self) 
     self.L1 = Tkinter.Text(self,borderwidth=0,font=('Arial', 10),width=25, 
     height=15) 
     self.s1.config(command=self.L1.yview,elementborderwidth=3) 
     self.L1.config(yscrollcommand=self.s1.set) 
     self.L1.grid(column=0,row=0,sticky='EW') 
     self.s1.grid(column=1,row=0,sticky='NSEW') 
     self.L1.focus_set() 
    def save_data(self): 
     data = {'saved_data': self.L1.get('1.0', 'end')} 
     with file('testsave.data', 'wb') as f: 
      pickle.dump(data, f) 
     self.destroy() 
    def load_data(self): 
     try: 
      with file('testsave.data', 'rb') as f: 
       data = pickle.load(f) 
       self.L1.insert("end", data['saved_data']) 
     except IOError: 
      pass 
if __name__ == "__main__": 
    app = Note(None) 
    app.mainloop() 

回答

1

文本小部件保證在其內容末尾總是有一個尾隨換行符。獲取數據的正確方法是使用索引「end-1c」,這樣就不會獲得額外的換行符。如果您使用「結束」,則每個保存和加載循環都會添加一個空白。

+0

完美,謝謝! – rectangletangle 2010-09-02 01:47:44