PyQt5のチュートリアルを動かす ① Hello World


はじめに

以下のサイトを参考にPyQt5のチュートリアルを動かしてみました。

サンプル1

最初のサンプルです。

sample1.py
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
def window():
   app = QApplication(sys.argv)
   w = QWidget()
   b = QLabel(w)
   b.setText("Hello World!")
   w.setGeometry(100,100,200,50)
   b.move(50,20)
   w.setWindowTitle("PyQt5")
   w.show()
   sys.exit(app.exec_())
if __name__ == '__main__':
   window()

実行結果

=== プログラムの説明 ===

このプログラムは以下の流れで処理を行っています。
1.PyQtに含まれるQtCore,QtGui,QtWidgetsモジュールをインポート
2.アプリケーションオブジェクトのQApplicationクラスを生成
3.QWidgetで最上位のウィンドウを作成し,QLableオブジェクトを設置
4.ラベルに"hello world"という文字を記載
5.setGeometry()メソッドでウィンドウのサイズと位置を定義
6.app.exec_()メソッドでアプリケーションのメインループに入る

サンプル2

また、先程のコードをオブジェクト志向の様に作成することも可能です。

その場合のコードは以下のようになります。

sample2.py
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class window(QWidget):
   def __init__(self, parent = None):
      super(window, self).__init__(parent)
      self.resize(200,50)
      self.setWindowTitle("PyQt5")
      self.label = QLabel(self)
      self.label.setText("Hello World")
      font = QFont()
      font.setFamily("Arial")
      font.setPointSize(16)
      self.label.setFont(font)
      self.label.move(50,20)
def main():
   app = QApplication(sys.argv)
   ex = window()
   ex.show()
   sys.exit(app.exec_())
if __name__ == '__main__':
   main()

実行結果です。

=== プログラム説明 ===

先程のプログラムと違う点についてはQWidgetクラスを元にしたwindowクラスを宣言しているところです。これによって,1つ1つのwidgetを独立して作成していき、それを組み合わせることで大きなGUIプログラムを作成していくものと予想できます。

さいごに

QApplicationというクラスがPyQtのアプリを内部で管理しているのでしょうか?
今後もサンプルを動作させていき理解を深めて行ければなと思います。

次回

次回はモジュールやツールのまとめです。