ドラックアンドドロップの方法を確認出来たので、アプリケーション作成に向けてでウィンドウを作成してみたいと思います。


PySide6のWidgetから他のアプリ(エクスプローラーなど)へファイルをドラックアンドドロップ
PySide6を始めようと思い、最初にドラックアンドドロップ機能を確認したいと思います。他のアプリケーションとのデータ連携にドラックアンドドロップがありますが、PySide6のアプリから他のアプリケーション(今回はWindowsのエクスプロ...
Qtではウィンドウを使わずラベル直接表示出来て驚きましたが、今回はベースとなるウィンドウのお話になります。
ウィンドウの表示
import sys
from PySide6.QtWidgets import QApplication,QMainWindow
# メインウィンドウ
class MyMainWindow(QMainWindow):
# コンストラクタ
def __init__(self):
# スーパー(親)クラスのコンストラクタの呼び出し
super().__init__()
# ウィンドウサイズの設定
self.setGeometry(0, 0, 640, 400)
# フォームのタイトルを設定
self.setWindowTitle("QMainWindowのサンプル")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyMainWindow()
window.show()
sys.exit(app.exec())
ウィンドウが作成されました。
QMainWindow
を継承したclass MyMainWindow
を定義しています。
ウィンドウサイズの変更やタイトルの設定を試しましたが、self.setGeometry()
やself.setWindowTitle()
などプロパティではなくメソッドで名前がset
から始まるあたり昔のJavaの香りを感じます。と感じましたがPySideで使われているQtはC++ベースだったはずですので、そちらのスタイルなのでしょうか?また、setはあってもgetは見つけられなかったので、他言語の経験が使えない厄介なことに成りそうです。
メニューバーとステータスバー
とりあえずどのようにレイアウトされるか確認。
import sys
from PySide6.QtWidgets import QApplication,QMainWindow
# メインウィンドウ
class MyMainWindow(QMainWindow):
# コンストラクタ
def __init__(self):
# スーパー(親)クラスのコンストラクタの呼び出し
super().__init__()
# ウィンドウサイズの設定
self.setGeometry(0, 0, 640, 400)
# フォームのタイトルを設定
self.setWindowTitle("QMainWindowのサンプル")
# メニューバー
menubar1 = self.menuBar()
menubar1.addMenu("ファイル")
# ステータスバー
statusbar1 = self.statusBar()
statusbar1.showMessage('ステータスバー')
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyMainWindow()
window.show()
sys.exit(app.exec())
メニューバーの生成?はself.menuBar()
から行っていますので、QMainWindow(self)にはあらかじめメニューバーが仕込まれている模様。addMenu()
で要素を追加することで可視化?される模様。
ステータスバーもメニューバーと同じ感じに呼び出します。
ステータスバーの.showMessage()
で表示したメッセージはいつの間にか消えていていました。
予め用意されている点は便利で良いですが、これほどリッチなWindowを初めて見ました。
コメント