7月16日(ファイルと画像の入出力)

ページ名:7月16日(ファイルと画像の入出力)

テキストファイルの保存


import os
import tkinter as tk
from tkinter import filedialog

def save():
    root.filename =  filedialog.asksaveasfilename(initialdir = "/",title = "Save as",filetypes =  [("text file","*.txt")])
    with open(root.filename, 'w') as f:
        f.write(textbox.get("1.0", tk.END)) #textboxの最初から最後までを保存

root = tk.Tk()
root.geometry("400x300") #ウィンドウサイズ
tk.Label(text = "文章を入力してください").pack()
textbox = tk.Text(width = 40, height = 10) #入力フォーム
textbox.pack()
tk.Button(text = "名前を付けて保存", command = save).pack() #ボタンの表示
tk.mainloop()

 

問題:入力フォームの大きさを変えてみましょう
問題:「上書き保存」のボタンをつけましょう。つまり、一度保存したのと同じファイル名で保存するようにします。このボタンは、「名前を付けて保存」が一度押されたら表示するようにしましょう。

テキストファイルの読み込み

import os
import tkinter as tk

from tkinter import filedialog

def selectfile():
    filename = tk.filedialog.askopenfilename(filetypes = [('Text Files', ('.txt'))], initialdir = '/')
    if filename != '':
        with open(filename) as f:
            textdata = f.read()
            tk.Label(text = textdata).pack()

root = tk.Tk()
root.geometry("400x300") #ウィンドウサイズ
tk.Label(text = "テキストファイルを選択してください").pack()
tk.Button(text = "選択", command = selectfile).pack() #ボタンの表示
tk.mainloop()

問題:ファイルを読み込んだ際、ファイル名も表示するようにしましょう。
問題:このプログラムは2回目にファイルを選択すると、1回目の下に追加して表示する仕様になっています。追記ではなくて、上書きで表示するように変更しましょう。

画像ファイルの読み込み

import os
import tkinter as tk

from tkinter import filedialog

from PIL import Image, ImageTk #画像の処理

def selectfile():
    filename = tk.filedialog.askopenfilename(filetypes = [('Image Files', ('.gif','.png','.jpg'))], initialdir = '/')
    if filename != '':
        canvas = tk.Canvas(width = 400, height = 250)
        canvas.img = ImageTk.PhotoImage(file = filename)
        canvas.pack()
        canvas.create_image(0, 0,image = canvas.img, anchor = tk.NW)

root = tk.Tk()
root.geometry("800x600") #ウィンドウサイズ
tk.Label(text = "画像ファイルを選択してください").pack()
tk.Button(text = "選択", command = selectfile).pack() #ボタンの表示
tk.mainloop()

問題:先ほど同様、このプログラムは2回目にファイルを選択すると、1回目の下に追加して表示する仕様になっています。追記ではなくて、上書きで表示するように変更しましょう。

問題:テキストファイルも表示できるようにボタンを追加しましょう。

お絵描き


import os
import tkinter as tk

root = tk.Tk()
root.geometry("400x300") #ウィンドウサイズ
canvas = tk.Canvas(root, bg="white", width = 300, height = 200)
canvas.create_polygon(10, 10, 10, 100, 100, 100, 100, 10, fill="green") #正方形
canvas.create_line(10, 10, 150, 150, fill='red') #直線
canvas.pack()
root.mainloop()

問題:ボタンを設置し、ボタンを押したら図形が表示されるようにしましょう
問題:画像の読み込みボタンを設置し、画像と図形を重ねて表示できるようにしましょう。

 

参考:画像の保存


import os
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk #画像の処理

def saveimage():
    root.filename =  filedialog.asksaveasfilename(initialdir = "/",title = "Save as",filetypes =  [("PostScript file","*.ps")])
    canvas.postscript(file = root.filename) #psファイルで保存する

root = tk.Tk()
root.geometry("400x300") #ウィンドウサイズ
canvas = tk.Canvas(root, bg="white", width = 300, height = 200)
canvas.create_polygon(10, 10, 10, 100, 100, 100, 100, 10, fill="green") #正方形
canvas.create_line(10, 10, 150, 150, fill='red') #直線
canvas.pack()
tk.Button(text = "保存", command = saveimage).pack() #ボタンの表示
root.mainloop()

 

シェアボタン: このページをSNSに投稿するのに便利です。

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する

NG表示方式

NGID一覧