2020年8月5日水曜日

開発環境

Practical Programming: An Introduction to Computer Science Using Python 3.6 (Paul Gries(著)、Jennifer Campbell(著)、Jason Montojo(著)、Pragmatic Bookshelf)のChapter 16(Creating Graphical User Interfaces)、Exercise 6.の解答を求めてみる。

コード

#!/usr/bin/env python3
import tkinter
import tkinter.filedialog as dialog


class TextEditor:
    def __init__(self, parent):
        self.parent = parent

        # View
        self.frame = tkinter.Frame(self.parent)
        self.frame.pack()
        self.text = tkinter.Text(self.frame)
        self.text.pack()
        menubar = tkinter.Menu(self.frame)
        filemenu = tkinter.Menu(menubar)
        filemenu.add_command(label='保存', command=self.save)
        filemenu.add_command(label='終了', command=self.quit)
        menubar.add_cascade(label='File', menu=filemenu)
        self.parent.config(menu=menubar)

    # Controller

    def save(self):
        data = self.text.get('0.0', tkinter.END)
        filename = dialog.asksaveasfilename(
            parent=self.frame,
            filetypes=[('Text', '*.txt')],
            title='Save as...',
        )
        with open(filename, 'w') as writer:
            writer.write(data)

    def quit(self):
        self.parent.destroy()


if __name__ == "__main__":
    window = tkinter.Tk()
    counter = TextEditor(window)
    window.mainloop()

入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))

% ./sample6.py   
% ./sample6.py   
% cat sample6.txt 
こんにちは。
Hello, World!
%

0 コメント:

コメントを投稿