2017年4月6日木曜日

Tkinter でGUI音遊びソフト作り(2) - Tkinter ことはじめ

Python でGUIを作るためのモジュール、Tkinter をおそるおそる使っていきます。


1. Tkinterの学び方

webにハウツーがあふれているかと言えばそういう感じでもなかったです。基本的に以下の2つのサイトを見ながらやっています。
お気楽 Python/Tkinter 入門
Tkinter 入門
当然のことながら二つのサイトはコードの書き方が全然違うので注意が必要です。後者のほうがクラス等を用いていてより Python らしい書き方ですが、前者のほうが初めての人にはわかりやすいコードかと思います。
あとこちらを見て関数を探しました。
http://infohost.nmt.edu/tcc/help/pubs/tkinter.pdf
英語が苦手なのでなるべく見たくはないですが、日本語サイトでは一部しか取り扱っていないためどうしても必要になるときがありました。
ぶっちゃけこれらを見ていけばだいたいの使い方はわかると思います。

2. 基礎を作る

まずはインタフェースの完成図を頭にイメージしてみます。大体自分には何が必要かわかると思います。僕の作りたいインタフェース上には、
  • ウインドウ
  • ボタン
  • 図形(固定)
  • 図形(周期的に動く)
  • 図形(ドラッグで動かせる)
があったので、先述のサイトをポチポチして作り方を探しました。

2.1 ウインドウの作り方

以下のようにすればウインドウが出ます。

import tkinter as tk

hoge = tk.Tk()
hoge.mainloop()
簡単ですね。基本的にはこの mainloop() 関数の前にいろいろなパーツを生み出す関数を書いていく感じです。ウインドウの大きさはたぶん変えられますが、やったことありません。全てのパーツを入れて位置を合わせればその大きさに合わせられるので、僕には必要ありませんでした……。

 2.2 ボタンの作り方

ボタンは以下のような関数で作ります。
button = tk.Button(hoge, text='ボタンに表示する文字', command=func)
button.pack() 
第1引数には帰属するウインドウを入れます。キーワード引数textはボタンに表示する文字、commandはボタンを押すと実行される関数を入れます。他にもいろんなキーワード引数がありますが、これで最低限のボタンが作れますね。pack というのはボタンを配置する関数です。Tkinter には配置のための関数がpack、grid、placeの3つありますが、packが引数なしで使えるので最も単純です。packは端から詰め込み、gridはマス目に入れていき、placeが自由配置のイメージです。

 2.3 図形の作り方

図形を作るためにキャンバスという図形作成用のエリアみたいなものが必要なので、まずそれを作ります。
c0 = tk.Canvas(hoge, width='幅', height='高さ')
見たまんまですね。このキャンバス上に直線や楕円、多角形などの図形を描くことができます。楕円をメインに使うのでそれだけ書いておくと、
id = c0.create_oval(x0,y0,x1,y1)
で生成できます。(x0, y0)を左上、(x1, y1)を右下の点とした長方形に内接する円として描かれます。id に代入をしていますが、キャンバス上に生成した図形は生成順に1オリジンの整数で識別番号が与えられますので、今回の場合 id には1が代入されます。ボタン同様に c0.pack() をすることで表示されます。

このあたりで見た目それらしいのが作れます。周期的に動く図形とドラッグ可能図形は次回にでも。

0 件のコメント:

コメントを投稿