テキストファイルの保存
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()
CSV(Comma Separated Values)
menu.csv
コーヒー, 400, ハンドドリップのコーヒーです
紅茶, 500, 地元産の茶葉を使用しています
チーズケーキ, 350, ボリューム満点の濃厚チーズケーキです
ランチ, 1000, 週替わりメニューにコーヒーが付きます
①メモ帳を起動します
②上記文字列をコピーして貼り付けします
③「名前を付けて保存」で「すべてのファイル」でmenu.csvと名前を付けて保存します
ExcelからCSVファイルを作る方法
①Excelで適当な表を作ります。
②「名前をつけて保存」で「ファイルの種類」をcsvで選択してください
※罫線や書式は保存されません
読み込みの確認
import csv
MENUFILE = 'C:/Users/Hikyaku/Documents/prj/kotorilabo/sample/menu.csv' #それぞれ変更してください
menucsv = open(MENUFILE, encoding='shift-jis')
for row in csv.reader(menucsv):
print(row)
データを構造化する
import csv
MENUFILE = 'C:/Users/Hikyaku/Documents/prj/kotorilabo/sample/menu.csv' #それぞれ変更してください
#csvファイルを読み込む
menucsv = open(MENUFILE, encoding='shift-jis')
menus = {} #menus[メニュー名] = [価格, 説明]
for row in csv.reader(menucsv):
menus[row[0]] = row[1:] #rowの先頭をキーに、1番地以降を値に設定する
#メニューの検索
menu = input('検索したいメニューは?')
data = menus[menu]
print('価格:' + data[0] + '円, 説明:' + data[1])
tkinterでの表の表示
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
root.geometry("400x300") #ウィンドウサイズ
tree = ttk.Treeview(root)
tree["columns"] = (1,2,3)
tree["show"] = "headings"
tree.column(1,width=100)
tree.column(2,width=50)
tree.column(3,width=200)
tree.heading(1,text="商品名")
tree.heading(2,text="価格")
tree.heading(3,text="説明")
tree.insert("","end",values=('コーヒー',400,'ハンドドリップのコーヒーです'))
tree.insert("","end",values=('紅茶',500,'地元産の茶葉を使用しています'))
tree.insert("","end",values=('チーズケーキ',350,'ボリューム満点の濃厚チーズケーキです'))
tree.insert("","end",values=('ランチ',1000,'週替わりメニューにコーヒーが付きます'))
tree.pack()
root.mainloop()
CSVとtkinterの連携
import os
import tkinter as tk
import tkinter.ttk as ttk
MENUFILE = 'C:/Users/Hikyaku/Documents/prj/kotorilabo/sample/menu.csv' #それぞれ変更してください
root = tk.Tk()
root.geometry("500x300") #ウィンドウサイズ
#表の設定
tree = ttk.Treeview(root)
tree["columns"] = (1,2,3)
tree["show"] = "headings"
tree.column(1,width=100)
tree.column(2,width=50)
tree.column(3,width=200)
tree.heading(1,text="メニュー名")
tree.heading(2,text="価格")
tree.heading(3,text="説明")
#データの読み込み
menucsv = open(MENUFILE, encoding='shift-jis')
for row in csv.reader(menucsv):
tree.insert("","end",values=row)
tree.pack()
tk.mainloop()
CSVとtkinterの連携②データの追加
import os
import tkinter as tk
import tkinter.ttk as ttk
MENUFILE = 'C:/Users/Hikyaku/Documents/prj/kotorilabo/sample/menu.csv' #それぞれ変更してください
def add_data():
tree.insert("","end",values=(entry1.get(), entry2.get(), entry3.get()))
root = tk.Tk()
root.geometry("500x400") #ウィンドウサイズ
#表の設定
tree = ttk.Treeview(root)
tree["columns"] = (1,2,3)
tree["show"] = "headings"
tree.column(1,width=100)
tree.column(2,width=50)
tree.column(3,width=200)
tree.heading(1,text="メニュー名")
tree.heading(2,text="価格")
tree.heading(3,text="説明")
#データの読み込み
menucsv = open(MENUFILE, encoding='shift-jis')
for row in csv.reader(menucsv):
tree.insert("","end",values=row)
tree.pack()
#入力画面の設定
frame1 = tk.Frame(root)
frame1.pack()
tk.Label(frame1,text="商品名").pack(side="left")
entry1 = tk.Entry(frame1)
entry1.pack(side="left")
frame2 = tk.Frame(root)
frame2.pack()
tk.Label(frame2,text="価格").pack(side="left")
entry2 = tk.Entry(frame2)
entry2.pack(side="left")
frame3 = tk.Frame(root)
frame3.pack()
tk.Label(frame3,text="説明").pack(side="left")
entry3 = tk.Entry(frame3)
entry3.pack(side="left")
# 追加ボタンの設定
tk.Button(root,text="追加", command=add_data).pack()
tk.mainloop()
CSVの書き込み
with open(DATAFILE, 'w', newline = '') as f:
writer = csv.writer(f)
for row in data:
writer.writerow(row)
画像ファイルの読み込み
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()
コメント
最新を表示する
NG表示方式
NGID一覧