2016/11/23(水) [n年前の日記]
#1 [python] PySideのQToolBoxを確認
PySideの、QToolBoxの動作を確認してみたのだけど。
_qtoolbox_test.py

QTabWidgetを使った時と変わらんような…。「page x」をクリックすると、選んだウィジェットが表示されるけど、他のウィジェットが非表示になってしまう。そうじゃなくて、他のウィジェットは表示したまま、クリックしたところが開いたり閉じたりする動作を期待したのだけど…。
_qtoolbox_test.py
u"""
PySide + QToolBox の動作確認.
動作確認環境 : Windows10 x64 + Python 2.7.12 + PySide 1.2.4
"""
import sys
from PySide.QtCore import * # NOQA
from PySide.QtGui import * # NOQA
class Dummy(QWidget):
u"""仮表示用ウィジェット."""
def __init__(self, *argv, **keywords):
"""init."""
super(Dummy, self).__init__(*argv, **keywords)
l = QVBoxLayout(self)
l.addWidget(QPushButton("Dummy", self))
l.addWidget(QPushButton("Dummy", self))
l.addWidget(QPushButton("Dummy", self))
self.setLayout(l)
class MyWidget(QWidget):
u"""メインウインドウ相当."""
def __init__(self, *argv, **keywords):
"""init."""
super(MyWidget, self).__init__(*argv, **keywords)
page1 = Dummy(self)
page2 = Dummy(self)
page3 = Dummy(self)
qtb = QToolBox(self)
qtb.addItem(page1, "page 1")
qtb.addItem(page2, "page 2")
qtb.addItem(page3, "page 3")
l = QVBoxLayout(self)
l.addWidget(qtb)
self.setLayout(l)
def main():
"""main."""
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()

QTabWidgetを使った時と変わらんような…。「page x」をクリックすると、選んだウィジェットが表示されるけど、他のウィジェットが非表示になってしまう。そうじゃなくて、他のウィジェットは表示したまま、クリックしたところが開いたり閉じたりする動作を期待したのだけど…。
◎ QTabWidgetを使った例。 :
ちなみに、QTabWidget を使った例は以下。
_qtabwidget_test.py

これもまた、選んだウィジェットは表示されるけど、ソレ以外のウィジェットが非表示になる、という点は変わらないわけで。
_qtabwidget_test.py
u"""
QTabWidgetのテスト.
動作確認環境 : Windows10 x64 + Python 2.7.12 + PySide 1.2.4
"""
import sys
from PySide.QtCore import * # NOQA
from PySide.QtGui import * # NOQA
class Dummy1(QWidget):
u"""仮表示用ウィジェット1."""
def __init__(self, *argv, **keywords):
"""init."""
super(Dummy1, self).__init__(*argv, **keywords)
l = QVBoxLayout(self)
l.addWidget(QPushButton("Dummy1", self))
self.setLayout(l)
class Dummy2(QWidget):
u"""仮表示用ウィジェット2."""
def __init__(self, *argv, **keywords):
"""init."""
super(Dummy2, self).__init__(*argv, **keywords)
l = QVBoxLayout(self)
l.addWidget(QPushButton("Dummy2", self))
self.setLayout(l)
class TestQTabWidget(QWidget):
u"""メインウインドウ相当."""
def __init__(self, *argv, **keywords):
"""init."""
super(TestQTabWidget, self).__init__(*argv, **keywords)
tab1 = Dummy1(self)
tab2 = Dummy2(self)
qtab = QTabWidget()
qtab.addTab(tab1, "Tab 1")
qtab.addTab(tab2, "Tab 2")
l = QVBoxLayout()
l.addWidget(qtab)
self.setLayout(l)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = TestQTabWidget()
w.show()
sys.exit(app.exec_())

これもまた、選んだウィジェットは表示されるけど、ソレ以外のウィジェットが非表示になる、という点は変わらないわけで。
◎ ちと考えてること。 :
ボタンを押したら、ボタンのすぐ下に配置してあるウィジェットが非表示になる、みたいなカスタムウィジェットを作れば目的を果たせるのではあるまいか…。
しかし、QWidget の表示・非表示は、何のメソッドを呼べばできるのかな。ちと調べてみよう…。たぶん hide() とか setVisble() でイケるんじゃないかと思うけど…。
しかし、QWidget の表示・非表示は、何のメソッドを呼べばできるのかな。ちと調べてみよう…。たぶん hide() とか setVisble() でイケるんじゃないかと思うけど…。
[ ツッコむ ]
以上、1 日分です。