0

I programming project "ChildrenEditor".
This is editor written in python/tkinter.
Here write your own mistakes is not resolved.
Please help solve them.

1
Contributor
1
Reply
2
Views
5 Years
Discussion Span
Last Post by zygimantelis
0

Why when from tkinter text widget to console it's cuting first letter.

textfile: Wed, 07 Sep 14:40:53

output: ed, 07 Sep 14:40:53

code:

from Tkinter import * 
from tkSimpleDialog import askstring
from tkFileDialog   import asksaveasfilename
from tkFileDialog import askopenfile
from tkMessageBox import askokcancel          
from time import *
class Quitter(Frame):                        
    def __init__(self, parent=None):          
        Frame.__init__(self, parent)
        self.pack()
        widget = Button(self, text='Quit', command=self.quit)
        widget.pack(expand=YES, fill=BOTH, side=LEFT)
    def quit(self):
        ans = askokcancel('Verify exit', "Really quit?")
        if ans: Frame.quit(self)


class ScrolledText(Frame):
    def __init__(self, parent=None, text='', file=None):
        Frame.__init__(self, parent)
        self.pack(expand=YES, fill=BOTH)               
        self.makewidgets()
        self.settext(text, file)
    def makewidgets(self):
        sbar = Scrollbar(self)
        text = Text(self, relief=SUNKEN)
        sbar.config(command=text.yview)                  
        text.config(yscrollcommand=sbar.set)           
        sbar.pack(side=RIGHT, fill=Y)                   
        text.pack(side=LEFT, expand=YES, fill=BOTH)     
        self.text = text
    def settext(self, text='', file=None):
        if file: 
            text = open(file, 'r').read()
        self.text.delete('1.0', END)                   
        self.text.insert('1.0', text)                  
        self.text.mark_set(INSERT, '1.0')              
        self.text.focus()                                
    def gettext(self):                               
        return self.text.get('1.0', END+'-1c')         



class TextEditor(ScrolledText):                        
    def __init__(self, parent=None, file=None): 
        frm = Frame(parent)
        frm.pack(fill=X)
        Button(frm, text="Open", command=self.onOpen).pack(side=LEFT)
        Button(frm, text='Save',  command=self.onSave).pack(side=LEFT)
        Button(frm, text='Cut',   command=self.onCut).pack(side=LEFT)
        Button(frm, text='Paste', command=self.onPaste).pack(side=LEFT)
        Button(frm, text='Find',  command=self.onFind).pack(side=LEFT)
        Button(frm, text='Insert Time', command=self.insertTime).pack(side=LEFT)
 #      Button(frm, text='Close file', command=self.onFileClose).pack(side=LEFT)
        Quitter(frm).pack(side=RIGHT)
        ScrolledText.__init__(self, parent, file=file) 
        self.text.config(font=('courier', 9, 'normal'))
    def onSave(self):
        filename = asksaveasfilename()
        if filename:
            alltext = self.gettext()                      
            open(filename, 'w').write(alltext)          
    def onCut(self):
        text = self.text.get(SEL_FIRST, SEL_LAST)        
        self.text.delete(SEL_FIRST, SEL_LAST)           
        self.clipboard_clear()              
        self.clipboard_append(text)
    def onPaste(self):                                    
        try:
            text = self.selection_get(selection='CLIPBOARD')
            self.text.insert(INSERT, text)
        except TclError:
            pass                                      
    def onFind(self):
        target = askstring('Find', 'Search String?')
        if target:
            where = self.text.search(target, INSERT, END)  
            if where:                                    
                print where
                pastit = where + ('+%dc' % len(target))   
               #self.text.tag_remove(SEL, '1.0', END)     
                self.text.tag_add(SEL, where, pastit)     
                self.text.mark_set(INSERT, pastit)         
                self.text.see(INSERT)                    
                self.text.focus()                
    def insertTime(self):
        time = strftime('%a, %d %b %H:%M:%S ', gmtime())
        self.text.insert('1.0', time)
    def onOpen(self):
        file = askopenfile(parent=None,mode='rb',title='Open file')
        if file != None:
            data = file.read()
            self.text.delete('1.1','2.0')
            self.text.insert('2.0', data)
            file.close()
            print self.text.get('1.1',"end")
if __name__ == '__main__':
    try:
        TextEditor(file=sys.argv[1]).mainloop()   
    except IndexError:
        TextEditor().mainloop()

Edited by Ezzaral: Added code tags. Please use them to format any code that you post.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.