大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

ラズパイデスクトップでPyQt5入門(17)WidgetsⅡ(2)

著者:國松亜紗子
公開日:2020/03/08
最終更新日:2020/03/08
カテゴリー:技術情報

こんばんは。國松です。
今回はQSpliterとQComboBoxを見て行きたいと思います。

参考サイト
ZetCode PyQt5 tutorial
【PythonでGUI】PyQt5 -始めの一歩-

3.QSplitter
QSplitterを使用するとウイジェットサイズを(境界をドラッグすることで)変更できるようになります。
今回は2つのQSplitterで構成された3つのQFrameWidgetsを作成していきます。

#!/usr/bin/python3
#-*- coding: utf-8-*-

"""
This example shows how to use QSplitter widget
"""

from PyQt5.QtWidgets import (QWidget,QHBoxLayout,QFrame,QSplitter, QStyleFactory,QApplication)
from PyQt5.QtCore import Qt
import sys

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        hbox = QHBoxLayout(self)
        
        #フレームオブジェクトの作成(QFrameWisgets間の境界を確認するためにスタイル付きのフレームを使用) 
        topleft = QFrame(self) 
        topleft.setFrameShape(QFrame.StyledPanel)
        
        topright = QFrame(self) 
        topright.setFrameShape(QFrame.StyledPanel)

        buttom = QFrame(self) 
        buttom.setFrameShape(QFrame.StyledPanel)

        #水平方向のSploterオブジェクトを作成して、フレームを追加
        splitter1 = QSplitter(Qt.Horizontal)
        splitter1.addWidget(topleft)
        splitter1.addWidget(topright)
        
        #垂直方向のSpliterオブジェクトを追加して、フレームを追加
        splitter2 = QSplitter(Qt.Vertical)
        splitter2.addWidget(splitter1)
        splitter2.addWidget(buttom)

        hbox.addWidget(splitter2)
        self.setLayout(hbox)

        self.setGeometry(300,300,300,200)
        self.setWindowTitle('QSplitter')
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

4.QComboBox
QComboBoxはユーザーがオプションをリストから選択できるウィジェットです。
今回はQComboBoxとQLabelWisgetsを使用しQComboBoxから選択した値(オプション)がラベルに表示されるようにしていきます。
(
使用する5つのオプションはLilnuxのディストリビューションの名前です)

#!/usr/bin/python3
#-*-coding: utf-8 -*-

"""
This example shows how to use a QComboBox widget
"""

from PyQt5.QtWidgets import (QWidget,QLabel,QComboBox,QApplication)
import sys

class Example(QWidget):
    def __init__(self):
     super().__init__()
     self.initUI()

    def initUI(self):
        self.lbl = QLabel("Ubuntu",self)

#5つのオプションを持つコンボボックスを作成
        combo = QComboBox(self)
        combo.addItem("Ubuntu")
        combo.addItem("Mandriva")
        combo.addItem("Fedora")
        combo.addItem("Arch")
        combo.addItem("Gentoo")

        combo.move(50,50)
        self.lbl.move(50,150)

#オプションを選択するとActivated()メソッドを呼び出す
        combo.activated[str].connect(self.onActivated)

        self.setGeometry(300,300,300,200)
        self.setWindowTitle('QComboBox')
        self.show()

#選択したオプションに応じてラベルのサイズを調整する
    def onActivated(self,text):
        self.lbl.setText(text)
        self.lbl.adjustSize()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

 

    上に戻る