2017-04-16 7 views
0

Tkinterで開いたファイル(追加または削除)を変更するにはどうすればよいですか? たとえば、ノートパッドでファイルを開くと、簡単にテキストを変更できます。 私はtkinterでそれをどうやって行うことができないのか分かりません。 私のコードがあります:tkinterでテキストファイルを修正するpython3

from tkinter import * 
from tkinter import filedialog 
import re 

class Window(Frame): 
    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.master = master 

     self.master.title("JoNotepad") 
     self.pack(fill=BOTH, expand=1) 

     menu = Menu(top) 
     top.config(menu=menu) 
     self.file_menu = Menu(menu) 
     menu.add_cascade(label="File", menu=self.file_menu) 
     self.file_menu.add_command(label="New") 
     self.file_menu.add_command(label="Open",  command=self.open_file_function) 
     self.file_menu.add_command(label="Save") 
     self.file_menu.add_separator() 
     self.file_menu.add_command(label="Exit") 

     self.listNodes = Listbox(top, height=200, width=200) 
     self.listNodes.pack(side=LEFT, fill=Y, expand=True) 

     self.scrollbar = Scrollbar(top, orient="vertical") 
     self.scrollbar.config(command=self.listNodes.yview) 
     self.scrollbar.pack(side=RIGHT, fill=Y, expand=True) 

     self.listNodes.config(yscrollcommand=self.scrollbar.set) 


    def open_file_function(self): 

     self.file_save = filedialog.askopenfilename(initialdir = "/", title = "Select file", filetypes = (("txt files", "*.txt"), ("All files", "*.*"))) 
     with open(self.file_save) as file: 
      for i in file: 
       self.listNodes.insert(END, i) 


top = Tk() 
top.geometry("1000x1000") 
ap = Window(top) 

top.mainloop() 

答えて

0

があなたの代わりにListboxtkinter Text widgetを使用する必要があります。 Textウィジェットを使用すると、必要な操作(テキストの追加、テキストの削除、テキストの選択など)を実行できます。

コードはTextウィジェットを使用しています。

from tkinter import * 
from tkinter import filedialog 
import re 

class Window(Frame): 
    def __init__(self, master=None): 
     Frame.__init__(self, master) 
     self.master = master 

     self.master.title("JoNotepad") 
     self.pack(fill=BOTH, expand=1) 

     menu = Menu(top) 
     top.config(menu=menu) 
     self.file_menu = Menu(menu) 
     menu.add_cascade(label="File", menu=self.file_menu) 
     self.file_menu.add_command(label="New") 
     self.file_menu.add_command(label="Open",  command=self.open_file_function) 
     self.file_menu.add_command(label="Save") 
     self.file_menu.add_separator() 
     self.file_menu.add_command(label="Exit") 

     self.text = Text(top, height=200, width=200) #Use Text widget insted of Listbox 
     self.text.pack(side=LEFT, fill=Y, expand=True) 

     self.scrollbar = Scrollbar(top, orient="vertical") 
     self.scrollbar.config(command=self.text.yview) 
     self.scrollbar.pack(side=RIGHT, fill=Y, expand=True) 

     # change all occurances of self.listNodes to self.text 
     self.text.config(yscrollcommand=self.scrollbar.set) 


    def open_file_function(self): 

     self.file_save = filedialog.askopenfilename(initialdir = "/", title = "Select file", filetypes = (("txt files", "*.txt"), ("All files", "*.*"))) 
     with open(self.file_save) as file: 
      for i in file: 
       self.text.insert(END, i) 


top = Tk() 
top.geometry("1000x1000") 
ap = Window(top) 

top.mainloop() 
+0

ありがとうございました。出来た。 –

関連する問題