Hello Qt for Python
9月 05, 2018 by 鈴木 佑 | Comments
この記事は The Qt Blog の Hello Qt for Python を翻訳したものです。
執筆: Cristián, 2018年05月04日
Qt for Python のテクノロジープレビューのリリースが迫って来たのに伴い、Python の世界 へのドアの開け方を簡単に紹介したいと思います。
早速ですが、QWidgets を使って Qt for Python の簡単さを実感してみましょう。
すべてのスクリプトはだいたい以下のような構成になっています:
- QApplication のインスタンスを生成します
- QWidgets の中から使用したいもの(QLabelなど)をインポートします
- アプリケーションを表示し、QApplication を実行します
これらをまとめると、以下のようになります。
# hello_world.py
from PySide2.QtWidgets import QApplication, QLabelapp = QApplication([])
label = QLabel("Hello Qt for Python!")
label.show()
app.exec_()
これを実行するのは、単に python hello_world.py を実行するだけです。
もちろん、これでおしまいではありません。重要なことは、Qt のクラスのメソッドにどうやってアクセスするのか? ということです。
プロセスをシンプルにするため、Qt の API はそのままの形を保っています。たとえば、QLabel のサイズを指定する場合、C++ では以下のようにしますよね。
QLabel *label = new QLabel();
label->setText("Hello World!");
label->resize(800, 600);
同様のことを Qt for Python でやる場合は以下のようになります。
label = QLabel()
label.setText("Hello World!")
label.resize(800, 600)
というわけで、C++ と同じということが分かったので、より高度なアプリケーションも書くことができるでしょう。
import sys
import random
from PySide2.QtCore import Qt
from PySide2.QtWidgets import (QApplication, QWidget,
QPushButton, QLabel, QVBoxLayout)class MyWidget(QWidget):
def __init__(self):
QWidget.__init__(self)self.hello = ["Hallo welt!", "Ciao mondo!",
"Hei maailma!", "Hola mundo!", "Hei verden!"]self.button = QPushButton("Click me!")
self.text = QLabel("Hello World")
self.text.setAlignment(Qt.AlignCenter)self.layout = QVBoxLayout()
self.layout.addWidget(self.text)
self.layout.addWidget(self.button)
self.setLayout(self.layout)self.button.clicked.connect(self.magic)
def magic(self):
self.text.setText(random.choice(self.hello))if __name__ == "__main__":
app = QApplication(sys.argv)
widget = MyWidget()
widget.resize(800, 600)
widget.show()
sys.exit(app.exec_())
Qt をあまり知らない方もいるかと思いますが、自分のやりたいことを実現するために既存のクラスを拡張することは一般的なことです。今回のサンプルでは、QWidget を基底クラスとしてその中に QLabel と QPushButton を配置しました。
このアプリケーションは以下のとおりとてもシンプルです:
- 初めに、Hello World をいくつかの言語に翻訳したもののリストを記述しました
- 次に、QPushButton と QLabel を所定の引数で初期化し、フォントやサイズの設定を行いました
- その後、QVBoxLayout を生成し、必要な部品をそこに含めて、このレイアウトを割り当てました
- 最後に、QPushButton の clicked() シグナルを magic という名前の独自のメソッドと接続しました
これにより、ボタンをクリックするたびに、ランダムな言語での Hello World が表示されます!
今回のシンプルなスクリプトが、Qt for Python で書かれるほとんどのアプリケーションの雛形となります。Qt for Python がリリースされ次第、すぐにお試しいただければと思います。
Blog Topics:
Comments
Subscribe to our newsletter
Subscribe Newsletter
Try Qt 6.6 Now!
Download the latest release here: www.qt.io/download.
Qt 6.6. is a feature release with focus on improving UX capabilities including responsive UI technology and the Qt Graph module.
We're Hiring
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.