なんかいろいろこんぴゅーたかんけいのなぐりがき

なんか勉強しているこんぴゅーた関係のことのメモやそれ以外のことを書こうかなあ...

logs

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

とりうご第2.5回 python

 とりあえず動けばいいやという趣旨でpythonのプログラミングを説明しようと過去に2回ほど記事を書いたけど、こんなの一体誰が参考にするんだ!?と思い、頓挫していたわけですが、今日はとりあえず、「とりうご」で1番最初に作ることになるであろうと思っていたキッチンタイマーの解説をしちゃいたいと思います。またとりうご第3回以降は気分が乗って暇なときにやっていこうと思ってます。

それじゃあ、まずはソースコードから50行でタイマーがかけちゃいます。


from Tkinter import *
from tkMessageBox import *
import time


def pop():
showinfo(title="test",message="バルス!!")
def count():
one_count()
if mode.get() == 0:
pop()
else :
root.after(1000,count)
def one_count():
i = mode.get()
i = i - 1
mode.set(i)
string = str(i / 60)
string = string + ":" + str(i % 60)
count_str.set(string)

def set5min():
count_str.set("5:00")
def set3min():
count_str.set("3:00")




root = Tk()

string = ""

mode = IntVar()
mode.set(180)

count_str = StringVar()
count_str.set("3:00")

label = Label(text="timer")
label.pack()

Radiobutton(root,text="3分間待ってやる",variable=mode,value=18,command = set3min).pack()
Radiobutton(root,text="5分間待ってやる",variable=mode,value=300,command = set5min).pack()

Button(root,text="Start",command=count).pack()

label2 = Label(textvariable = count_str)
label2.pack()
root.mainloop()



最初の3行はモジュールのインポートをしています。Pythonは初期状態では必要最低限の機能しか備えておらず、必要な拡張モジュールをimport することでいろいろなことが簡単にできます。

次に def から始まるコードが続きますが、defは関数の定義です。
このプログラムではまずpopという名前の関数を定義しています。
popが呼ばれるとshowinfo関数(showinfo関数はtkMessageBox をimport することで自動的に使えるようになるのでこの関数は定義する必要ありません)を実行します。どのように動作するのか気になったときは対話モードでpythonを使うと分かりやすくてお勧めです。たとえば今回の場合は
対話モードで
>>> from tkMessageBox import *
>>> showinfo(title="test",message="barusu")
と入力すれば何が起きるか実験することが簡単にできます。(WINDOWSの場合 IDLE (Python GUI) というpythonをインストールしたときについてきたプログラムを実行すれば対話モードが使えます)

次はcout関数の定義です。この関数はプログラムの数行先に定義されているone_count関数を呼び出します。
そして、ifによる分岐命令により、mode.get()という後に使われているmode変数の値を取り出す関数で取り出した値が0と等しかった場合(mode.get() = 0ではなくmode.get() == 0)はpop関数を呼び出し、そうでない場合(else)は一秒後にまたcount関数が呼ばれるようにroot.after(1000,count)を呼びます。

次はone_count関数で
iにmodeの値をmode.get関数により代入し、次にi に i-1 の値を代入する、つまりはiから1引く。
そしてmodeにiの値を代入する。このときmode = iとはしない。なぜならmode変数はIntVar()という特殊な変数のようなものだからである。なのでmode.set(i)でmodeにiの値を入れる。
そしてstringという名前の変数にまず、str()関数により文字列型に変換されたiから60を割った値を代入する。
つぎにそのstring変数に":"という文字列とiを60で割ってでた余りを文字列型に変更したものとを合体させてものを代入する。この文字列がタイマーの表示に使われる。
そしてcount_strという特殊な変数にstring変数を代入する。

残る関数の定義はあと2つ
しかし
どちらもやっていることは大して変わらない
cout_str変数に文字列を代入しているだけ。

これで関数の定義はおしまい。

このプログラムではまず、
Tk()関数により、rootという変数に最初のwindowのようなものを与える。
そしてstring = "" とすることによりなにも文字列が入っていないstring変数を用意しておく
つぎにmodeというIntVar()という特殊な、整数がはいっている変数を用意し、それに180を入力しておく。

つぎにcount_strという変数をStringVar()というこれまた特殊な変数として用意し、"3:00"という文字列を入力しておく。

そして
label = Label(text="timer")
によりwindowに貼る文字を入れておく変数を用意し、
label.pack()
でwindowに貼り付ける。

labelの次はwindowにラジオボタンという選択式のボタンを貼り付ける。
この2行は上のlabelのように

Radiobutton(root,text="3分間待ってやる",variable=mode,value=18,command = set3min).pack()
Radiobutton(root,text="5分間待ってやる",variable=mode,value=300,command = set5min).pack()

      ↓

x1 = Radiobutton(root,text="3分間待ってやる",variable=mode,value=18,command = set3min)
x1.pack()
x2 = Radiobutton(root,text="5分間待ってやる",variable=mode,value=300,command = set5min)
x2.pack()

という風にかいても同じである。

Rudiobutton関数のvariableにmodeを指定してやることにより、そのラジオボタンが選択されたときに、valueに指定した、ここれは18とか300とかの値をmodeに代入することができる。そしてcommandに関数を指定するとそのラジオボタンが押されたときその関数を実行することができる。

Button(root,text="Start",command=count).pack()
は先と同様の考え方で
b = Button(root,text="Start",command=count)
b.pack()
として書いてしまってもいける。
Button関数はtextに指定した文字列の名前がついたボタンをつくることができ、ボタンが押されたときcommandに指定された関数、ここではcountが実行される。『つまりこのプログラムはこのボタンが押されたときに始めてcount関数が
呼ばれ、あとはroot.after(1000,count)により、いっていのインターバルで同関数が呼ばれるようになる。』


これは先に同じような散々説明したので飛ばす
label2 = Label(textvariable = count_str)
label2.pack()


最後の
root.mainloop()
はTkinterモジュールをつかってwindowがあるアプリケーションを使うときに最後に書いておいておかないといけないおまじないのようなものと今は考えておいてください。

以上説明おわり。

こんな雑でいい加減な説明では理解できないと思うので、まずはソースをコピペして、実行してみて、徐々にソースを弄っていけばなんとなく分かるようになっていくはず。

質問があればコメントでください。
スポンサーサイト

とりうご第2回python

それではさっそく第1回目の最後に書いた、とりあえずウィンドウを表示するプログラムの説明から。
 
from Tkinter import *
root = Tk()
root.mainloop()

まずは、1行目。これはpythonにTkinterというモジュールを使いますよう。と宣言しています。このモジュールを宣言していないと、Tk()やmainloop()といったGUIを利用するための関数などが使えません。つまり、TkinterはプログラマーにGUIアプリケーションをつくるための部品を提供してくれているのです。試に1行目をの最初に「#」を加えてみます。「#」があると、その行の「#」以降の文字が無効化されます。

#from Tkinter import *
root = Tk()
root.mainloop()

で、これを保存して実行すると…何か一瞬コマンドプロンプトが表示されて消えてしまいます。やはりきちんとTkinterを使うぞーと宣言しないとPythonは分かってくれませんでした。

それでは2行目の説明いきます。ここで「root」という名前のメインウィンドウをTk()関数により作っています。
で、3行目。ここでメインウィンドウであるrootに対して、イベントが起きるまで待機するように設定しています。

以上で前回の説明終了。このプログラム、書き方をこんな風にすると

from Tkinter import *
Tk().mainloop()

2行で書けてしまいます。

、とまあ前回の説明がこのくらいにして今回は前回のウィンドウにボタンをくっつけてみます。ただし、ボタンを押してもまだ何も反応しませんが…

from Tkinter import *

root = Tk()
button = Button(root,text="hello,world")# new
button.pack()# new
root.mainloop()


上が今回のコードで、前回と変わったところは2行だけです。
それでは新しく登場した関数について説明します。
まずは、Button(root,test="hello,world")から、関数ていうのは基本的に
関数名(第1引数第2引数,.....,第N引数)
といった具合で記述して用います
で、今回記述したButton関数では、第一引数にButtonを乗せるウィンドウの名前、第2引数にとしてtextに関する引数で、文字列「hello,world」を渡しています。


pack()はそのGUI部品を実際に搭載するために必要なのでbuttonをpack()を用いて乗せています。

以上が今回のプログラムの説明なのですが、読み返してみると、恐ろしいまでにいい加減です。しっかりとプログラミングを学ぼうと志している人には毒なので読まないほうがいいでしょう。ほかのサイトで学ぶべきです。絶対に。
逆に、とりあえずPythonでGUI作るとどんな感じになるんだろう、とか、GUIプログラミングのハードルが高く感じている人には読んでもらって、「こんなにいい加減に書いても一応動くんだあ」と感じてほしい。

とりうご第1回 python

 それでは第1回ということでpythonでとりあえずウィンドウを出すだけのプログラムを書きたいと思います。

 まず、私が使っているWindowsがVistaなのでVista上で作っていきます。と、その前にpyhtonについて少しだけ説明をします。
 pythonは……、と説明するのは面倒なのでしません。とにかくpythonはプログラミング言語の名前です。pythonの生みの親とかどこで使われているとか、そんなのは気になった時にgoogleかなんかで調べてみてください。知らなくてもとりあえずなんとかなるはずです。
 このページでは”とりあえず動くものを作る”ことだけに専念するので詳しい文法についてや、効率のよいコーディングのノウハウについてとかは何も説明しません。ほかのサイトを探してみてください。C言語とかよりは少ないですがPythonについて詳しく日本語で書かれた良質なドキュメントを見つけることができます。

 それではまず、Pythonでプログラミングを行うために http://www.python.jp/Zope/download/pythonjpdist からPython 2.3.4 日本語環境用インストーラ(Win32)をダウンロードしてインストールしましょう。正確にはテキストエディタさえあればプログラミングはできるのですが、実行はできません。上記リンクのプログラムをインストールすることによって、pythonを実行できるpythonインタプリタが手にはいります。


インストールし終わったら、Windowsでおなじみの左下にあるスタートメニューをだして、「コンピュータ」の項目を右クリックして、「プロパティ」をクリックして選択しましょう。するとウィンドウが開くと思いますが、そのウィンドウの中に「システム詳細設定」という項目があるのでそれをクリック。そうするとシステムプロパティというタイトルのウィンドウが開くので環境変数と書かれたボタンをクリックします。

 そうすると環境変数というタイトルのウィンドウが開きます。そこで環境変数というのが、ずら~と並んでいまが、今回は上半分のほうのリストだけ見ます。このリストの中に[PATH]というのが既に登録されていないか確認してみてください。

既に登録されている場合は、そのPATHを選択状態にし、編集ボタンをクリックしてください。そして変数値に ;C:\python23\ と追記しておいてください。

まだPATHが登録されていない人は新規ボタンで変数名を「PATH」、変数地を「C:\python23」として設定してください。

C:\python23はpythonのデフォルトのインストール場所です。PCの環境により異なる場合がありますのでそのときはpython.exeがあるフォルダをC:\python32の代わりに指定してください


上記の作業が終わったら、
Vistaのスタートメニュの項目から「アクセサリ」項目を選んで「コマンドプロンプト」をクリックして起動させてください。そしてこのコマンドプロンプト上で「python」とタイピングしてenterキーを押してく見てください。

'python' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

というメッセージが出なければPythonのインストールは終了です。右上をクリックしてコマンドプロンプトを閉じてください。

 それではようやくプログラミングを始めていきます。ご自分の好きなテキストエディタを開いてください。
 テキストエディタって何?おいしいの?って方はスタートメニューのアクセサリにある「メモ帳」を起動してください。メモ帳はテキストエディタのうちのひとつです。
 
 そして、メモ帳に以下のように記入してください。


from Tkinter import *
root = Tk()
root.mainloop()

入力が終わったらこれを名前を付けて保存で、今回はそうですねぇ、 1.py という名前で保存してみましょう。ただし、必ず、「ファイルの種類」の項目を<すべてのファイル>に選択してから保存してください。そうしないと自動的にファイル名の最後に「.txt」と追記され、うまくいかなくなります。結構ここでうまくいかなくて、はまったりします。

 で、作成した1.pyをクリックなりなんなりで起動してみてください。とりあえずウィンドウが表示されるはずです。次回はこのプログラムのいい加減な説明をしてから、ボタンを作りたいと思います。それではー
 
 

Paging Navigation

Navigations, etc.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。