ウィジェットを非表示にした後、ウィンドウのサイズを変更できるようにしながら、ウィンドウのサイズを変更するにはどうすればよいですか?

wesanyer

簡単な例を次に示します。

from PyQt4 import QtCore, QtGui
import sys

class MainWindow(QtGui.QWidget):
    def __init__(self):
        self.app = QtGui.QApplication(sys.argv)
        super(MainWindow, self).__init__()

        self.button = QtGui.QPushButton('Show/Hide')
        self.button.setCheckable(True)
        self.frame = QtGui.QFrame()
        self.frame.setFixedHeight(100)
        layout = QtGui.QVBoxLayout()
        layout2 = QtGui.QVBoxLayout()
        self.setLayout(layout)
        self.frame.setLayout(layout2)

        layout.addWidget(self.button)
        layout.addWidget(self.frame)
        layout.addStretch(1)
        layout2.addWidget(QtGui.QLabel('Yoyoyo'))

        self.button.toggled.connect(self.clickAction)

    def startup(self):
        self.show()
        sys.exit(self.app.exec_())

    def clickAction(self):
        checked = self.button.isChecked()
        if checked:
            self.frame.show()
        else:
            self.frame.hide()
if __name__ == "__main__":
    myApp = MainWindow()
    myApp.startup()

ボタンを切り替えると、フレームが適切に表示/非表示になります。MainWindowssizeConstraintSetFixedSize次のように設定するとわかります。

layout.setSizeConstraint(QtGui.QLayout.SetFixedSize)

ウィンドウのサイズが希望どおりに変更されます。ただし、ユーザーがウィンドウのサイズを変更できるようにしたいので、サイズを変更するSetFixedSizeことはできません。

したがって、コンテンツに基づいてサイズを変更しながら、ユーザーがサイズ変更可能なウィンドウの両方を実現するにはどうすればよいですか?

wesanyer

ここで見つけた会話に基づいて、私はこれを機能させることができました。解決策QTimerは、フレームを表示/非表示にしたに追加することでした。QTimer呼び出しresizeMeも以下に定義される方法。

from PyQt4 import QtCore, QtGui
import sys

class MainWindow(QtGui.QWidget):
    def __init__(self):
        self.app = QtGui.QApplication(sys.argv)
        super(MainWindow, self).__init__()

        self.button = QtGui.QPushButton('Show/Hide')
        self.button.setCheckable(True)
        self.frame = QtGui.QFrame()
        self.frame.setFixedHeight(100)
        self.layout = layout = QtGui.QVBoxLayout()
        layout2 = QtGui.QVBoxLayout()
        self.setLayout(layout)
        self.frame.setLayout(layout2)

        layout.addWidget(self.button)
        layout.addWidget(self.frame)
        layout.addStretch(1)
        layout2.addWidget(QtGui.QLabel('Yoyoyo'))

        self.button.toggled.connect(self.clickAction)

    def startup(self):
        self.show()
        sys.exit(self.app.exec_())

    def clickAction(self):
        checked = self.button.isChecked()
        if checked:
            self.frame.show()
        else:
            self.frame.hide()
        QtCore.QTimer.singleShot(0, self.resizeMe)

    def resizeMe(self):
        self.resize(self.minimumSizeHint())
if __name__ == "__main__":
    myApp = MainWindow()
    myApp.startup()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ