<< Visual StudioでPython(パイソン)を使ってみる2 | main | Visual StudioでPython(パイソン)を使ってみる4 >>

Visual StudioでPython(パイソン)を使ってみる3

 

前回の続きです。

 

このまえは、Tkinterの入出力まで行きました。

今回は、ファイルの保存、呼び込みを中心に、書いています。

ファイルさえ操作できれば、ソフトはできたも同然です。

 

 

 

保存ボタン、呼び込みボタンを作ります。(前回からボタンの並びを変えています)

そのあと、その関数を作ります。

下はコードです。そのあとで、説明しています。

# -*- coding: utf8 -*-

from tkinter import *
#入力の関数
def button_click():
    Val = TextBox1.get()
    Label1["text"] = Val + " を入力しました"
    ListBox1.insert(END,Val)
    TextBox1.delete(0,END)
#ファイル保存の関数
def button_click1():
    file_a = open('testfile.dat','w')
    List_num = ListBox1.index(END)
    for N in range(List_num):
        file_a.write(str(ListBox1.get(N) + '¥n'))
    file_a.close()
    Label1["text"] = "保存しました"
#ファイルから呼び込み関数
def button_click2():
    file_a = open('testfile.dat')
    line1 = file_a.read()
    file_a.close()
    line1 = line1.split()
    for N in line1:
        ListBox1.insert(END,N)
    Label1["text"] = "呼び込みました"
#エンターキーで入力関数
def enter_press(event):
    button_click()

#本体
root = Tk()
root.title(u"テスト")
root.geometry("400x320")

#リストボックス
ListBox1 = Listbox(root,height=10,width=25)
ListBox1.grid(column=0,row=0,rowspan=4,padx=5,pady=5)

#スクロールバー
scrollbar1 = Scrollbar(root,orient=VERTICAL,command=ListBox1.yview)
ListBox1['yscrollcommand'] = scrollbar1.set
scrollbar1.grid(column=1,row=0,rowspan=4,sticky=W+N+S)

#入力ボックス
TextBox1 = Entry(width=25)
TextBox1.grid(column=2,row=0)
TextBox1.bind("<Return>",enter_press)

#ボタン1
Button1 = Button(text=u'入力ボタン',width=20,command=button_click)
Button1.grid(column=2,row=1,columnspan=2,pady=5)

#ボタン2
Button2 = Button(text=u'保存ボタン',width=20,command=button_click1)
Button2.grid(column=2,row=2,columnspan=2,pady=5)

#ボタン3
Button3 = Button(text=u'呼込ボタン',width=20,command=button_click2)
Button3.grid(column=2,row=3,columnspan=2,pady=5)

#ラベル
Label1 = Label(text=u'test')
Label1.grid(column=0,row=5,columnspan=2,pady=10,sticky=W)

root.mainloop()

Pythonのファイルの入出力は、ほかのプログラムと同じで、簡単です。

基本的には、open、write、read、closeを使って行います。

 

:ファイルの保存

まずは、作ったデータを保存します。

 

#ボタン2を作って、command=button_click1にして、関数を呼びます。
Button2 = Button(text=u'保存ボタン',width=20,command=button_click1)

 

その関数を作ります。

 

def button_click1():
    file_a = open('testfile.dat','w')

ファイル('testfile.dat')を開きfile_aに入れます。

ファイルがなければ新規作成されます。


    List_num = ListBox1.index(END)

変数List_numにリストボックスの最後の番号を入れます。


    for N in range(List_num):
        file_a.write(str(ListBox1.get(N) + '¥n'))

リストボックスの最後まで、.writeでファイルを書き込みます。(¥nは改行です。)


    file_a.close()

ファイルを閉じます。


    Label1["text"] = "保存しました"

テキストボックスに表示します。

 

 

:ファイルの呼び込み

保存したデータを呼び込みます。

前と同様に、

#ボタン3を作って、command=button_click2にして、関数を呼びます。
Button3 = Button(text=u'保存ボタン',width=20,command=button_click2)

 

def button_click2():
    file_a = open('testfile.dat')

ファイルを開きます。正確にはopen('testfile.dat,'r')です。呼び込みの場合は'r'は省略できます。

ファイルがない場合はエラーとなります。

(エラーを避けたい場合、

import os

os.path.exists("./testfile.dat")

でファイルの存在を確認してください。)


    line1 = file_a.read()

変数line1にファイルを呼び込みます。


    file_a.close()

ファイルを閉じます。


    line1 = line1.split()

変数line1を.split()で改行を区切ります。


    for N in line1:
        ListBox1.insert(END,N)

変数line1からリストボックスに挿入します。


    Label1["text"] = "呼び込みました"

テキストボックスに表示します。

 

一応これで、ファイルの読み書きはできました。

 

 

あとは、細かい、使い勝手になります。

 

まず、入力してからいちいちマウスを押すのは面倒ですよね?

Enterキーを押して入力したいなぁと思うと思います。

そこで、入力ボックスにKey入力によるイベントを作ります。

#入力ボックスのところで、

 

TextBox1.bind("<Return>",enter_press)

 

この.bindがイベントで、"<Return>"がエンターキーを押したとき、enter_pressを処理する。

なので、

 

#エンターキーで入力関数

def enter_press(event):
    button_click()

をつくり、エンターキーが押されたら入力ボタンをクリックしたことにします。

(引数のeventにはイベントの情報(オブジェクト)が渡されます。

たとえば、event.charはキーボードのキャラクター文字、

event.symはキーボードのシンボルマーク、event.keycodeはキーボードのキーコードなど)

 

あと必要なのは、削除、変更、追加ですが、

ちょっと、長くなったので、あとは次回にします。

 

 

次回につづく

 

JUGEMテーマ:プログラミング

| python | 17:59 | comments(0) | trackbacks(0) |
Comment









Trackback
url: トラックバック機能は終了しました。

07
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
Profile
New entries
Archives
Categories
Recent comment
カウンター


今日
昨日
レンタルサーバ/プロバイダー




ファッション
カタログ通販ベルーナ(Belluna)

イマージュ - IMAGEアウトレットセール
yahoo・その他


買い物
ビックカメラ.com



Mobile
qrcode
Links
Others
無料ブログ作成サービス JUGEM