Pythonでメモ帳のようなテキストエディタを構築しており、Tkinterを使用しています。エディターの新規作成、開く、名前を付けて保存、終了、切り取り、コピー、貼り付け、バージョン情報、およびヘルプ機能を正常に実装しました。しかし、私は保存機能に苦労しています。以前に保存したファイルを開いて編集後に保存すると、名前を付けて保存機能のように機能します。私はtkFileDialog.asksavefile
、テキスト ファイルをtkFileDialog.asksavefilename
保存し、エディターの名前を付けて保存機能を実装するために使用しました。
私はpythonが初めてです。誰でも私をここに導くことができますか?
#! /usr/bin/python
import Tkinter
from Tkinter import *
import tkFileDialog, tkMessageBox
import os
class OpenEdit:
def __init__(self):
# Root Frame widget
self.root = Tk()
# Menu panel in frame
menubar = Menu(self.root)
# File menu,for open,save,save as and quit
filemenu = Menu(menubar)
editmenu = Menu(menubar)
filemenu.add_command(label="New", command=self.new)
filemenu.add_command(label="Open", command=self.open)
filemenu.add_command(label="Save", command=self.save)
filemenu.add_command(label="Save as", command=self.save_as)
filemenu.add_separator()
filemenu.add_command(label="Quit", command=self.root.quit)
menubar.add_cascade(label="File", menu=filemenu)
#Edit menu including Cut, Copy and Paste
editmenu = Menu(menubar)
editmenu.add_command(label="Cut", command=self.cut)
editmenu.add_command(label="copy", command=self.copy)
editmenu.add_command(label="Paste", command=self.paste)
menubar.add_cascade(label="Edit", menu=editmenu)
# About menu for show about us and help
aboutmenu = Menu(menubar)
aboutmenu.add_command(label="About", command=self.about)
aboutmenu.add_command(label="Help", command=self.help)
menubar.add_cascade(label="About", menu=aboutmenu)
# Returning defined setting for GUI
self.root.config(menu=menubar)
#Setting up the title of the widget
self.root.title("Untitled - OpenEdit")
# Adding Text Widget in the GUI
self.text = Text(self.root)
# This line allows it to be resized
self.text.pack(expand=YES, fill=BOTH)
self.root.mainloop()
#Defining new method
def new(self):
self.root.title("Untitled - OpenEdit")
self.file = None
self.text.delete(1.0,END)
#Defining open method
def open(self):
self.file = tkFileDialog.askopenfilename(defaultextension=".txt",filetypes=[("All Files","*.*"),("Text Documents","*.txt")])
if self.file == "":
#no file to open
self.file = None
else:
#try to open the file
#set the window title
self.root.title(os.path.basename(self.file) + " - OpenEdit")
self.text.delete(1.0,END)
file = open(self.file,"r")
self.text.insert(1.0,file.read())
file.close()
#Defining save method
def save(self):
fileName = tkFileDialog.asksaveasfile(mode='w')
try:
file = open(fileName, 'w')
textoutput = self.text.get(0.0, END)
file.write(textoutput)
except:
pass
finally:
file.close()
#Defining save_as method
def save_as(self):
fileName = tkFileDialog.asksaveasfilename(initialfile='Untitled.txt',defaultextension=".txt",filetypes=[("All Files","*.*"),("Text Documents","*.txt")])
try:
file = open(fileName, 'w')
textoutput = self.text.get(0.0, END)
file.write(textoutput)
except:
pass
finally:
file.close()
#Defining cut method
def cut(self):
self.text.event_generate("<<Cut>>")
#Defining copy method
def copy(self):
self.text.event_generate("<<Copy>>")
#Defining paste method
def paste(self):
self.text.event_generate("<<Paste>>")
#Defining about method
def about(self):
tkMessageBox.showinfo("OpenEdit","Created by: XYZ")
#Defining help method
def help(self):
tkMessageBox.showinfo("Help","This is help")
#Starting the instance of the class OpenEdit
OpenEdit()