ラズパイデスクトップでPyQt5入門(17)WidgetsⅡ(2)
こんばんは。國松です。
今回はQSpliterとQComboBoxを見て行きたいと思います。
参考サイト
ZetCode PyQt5 tutorial
【PythonでGUI】PyQt5 -始めの一歩-
3.QSplitter
QSplitterを使用するとウイジェットサイズを(境界をドラッグすることで)変更できるようになります。
今回は2つのQSplitterで構成された3つのQFrameWidgetsを作成していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #!/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のディストリビューションの名前です)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #!/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_()) |