Python のモジュールのインポートの異なる方法と使い分け


Python 3 マスターへの道:その1


Tkinter でウィンドウを表示する


 まずは、プレイ環境に必要な将棋盤を作っていくところから始めたいと思います。もちろん、私には、何の前知識もないので、こちらのサイトを参考にさせてもらいました。Tkinter という python3 の標準ライブラリに存在するパッケージを使ってみたいと思います。

 Tkinter については公式ページで、少し勉強してから使っていこうと思います。公式ページには、参考になるウェブサイトなどが添付されているので、積極的に使っていきます。


モジュールのインポート


 そうして、Tkinter について読んでいたのですが、いきなり引っかかってしまいました。それは、モジュールのインポートの仕方の基本についてです。実は、そこには主に4つの方法がありました。それら違いは、こちらから学ばせてもらいました。

1    import tkinter 

 まずは、tkinter が個別の名前空間としてインポートされます。これは、つまり、tkinter のメソッドやクラスを呼び出す際に、tkinter.メソッドや tkinter.クラスといった形で呼び出します。

2    import tkinter as tk

 次の、2つ目は、1つ目と同じく、個別の名前空間にインポートされます。ですが、ここでは as を使用することで、毎回 tkinter.メソッドや tkinter.クラスと書く代わりに、tk.メソッドや tk.クラスという形で呼び出すことができるようになります。

 なので、名前の長いモジュールの際や、なんども繰り返されるモジュールを使用する場合は、省略した名前で表記することで、効率的にコードを書くことができるのです。

3    from tkinter import ttk

 ここまでは、モジュール全体をインポートする形式でした。しかし、3つ目では、モジュールの中の特定のクラスやメソッドを呼び出す時に使用されます。また、1行目と2行目との大きな違いとして、個別の名前空間がないことが挙げられます。

 これは、つまり、既存していたクラスやメソッドと同一名のものがインポートされる時、それらは上書きされてしまうのです。

 しかし、利点として、tkinter.メソッドや tkinter.クラスのように、宣言しなくてよくなることが挙げられます。また、tkinter のライブラリの中から、どれが必要なのかをわかりやくすできることのようです。

4    from tkinter import *

 そして、4行目は、3行目の発展型で、ここでも、個別の名前空間が存在しないために、上書きが行われます。しかし、この場合は、モジュール全体を1行目や2行目のようにインポートしています。ですが、これは何が上書きされてしまったのか、把握が難しく、エラーを起こしやすいため、推奨しない場合が多いようです。

 ですが、色々、Tkinter の初心者向けのサイトを見てみると、4行目のように、インポートしている場合が、多いです。ですが、私は、推奨通りに、2行目の形式でインポートして行きたいと思います。

Tkinter のウィンドウを表示する


 それでは、まずは、Tkinter のウィンドウを表示するところから始めて行きます。コードは以下を使用しました。

1    import tkinter as tk
2    
3    root = tk.Tk()
4    root.mainloop()

 白紙のウィンドウが表示されました!



 結構シンプルにできました。ここでは、root というオブジェクトにTk クラスを割り当てています。そして、最後の .mainloop() は Tk クラスのメソッドを呼び出してます。この .mainloop() というメソッドは、イベントループと呼ばれるようです。イベントと処理を繰り返しているようで、真っ白の画面ですが、何からのイベントを待っているということになりますね。

 ですが、今回のウィンドウは形だけなので何も起こりません。今回は、ウィンドウを普通に閉じましたが、これからプログラムの中で、終了させたい際には、.destroy() というメソッドを使うことは覚えておかないといけないですね。

最後に


 今回は、インポートに時間をかけてしまって、全くと言っていいほど進展がありませんでした。それでも、コツコツ頑張って行きます。次回は、ウィンドウで何らかの表示を行うところまで行きたいですね。

 間違っている箇所や参考になった箇所があれば、コメントください!

※その6以降は、GUI を諸事情により、Tkinter から Kivy に移行しました。しかし、その5までの知識をある程度、ベースにはしているので、移行後はハイテンポで進んでいくと思います。なので、GUI の基本を知りたい方は、このまま読み進めてください。



前回:Python 脱初心者のために

次回:Tkinter のウィンドウをカスタマイズする方法