mieki256's diary



2016/11/23(水) [n年前の日記]

#1 [python] PySideのQToolBoxを確認

PySideの、QToolBoxの動作を確認してみたのだけど。

_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()

qtoolbox_ss.gif

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

QTabWidgetを使った例。 :

ちなみに、QTabWidget を使った例は以下。

_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_())

qtabwidget_ss.gif

これもまた、選んだウィジェットは表示されるけど、ソレ以外のウィジェットが非表示になる、という点は変わらないわけで。

ちと考えてること。 :

ボタンを押したら、ボタンのすぐ下に配置してあるウィジェットが非表示になる、みたいなカスタムウィジェットを作れば目的を果たせるのではあるまいか…。

しかし、QWidget の表示・非表示は、何のメソッドを呼べばできるのかな。ちと調べてみよう…。たぶん hide() とか setVisble() でイケるんじゃないかと思うけど…。

以上です。

過去ログ表示

Prev - 2016/11 - Next
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

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project