gpt4 book ai didi

python - 自动将 `stackedWidget` 页面的高度调整为放置在其上的小部件的高度

转载 作者:行者123 更新时间:2023-12-01 00:06:50 27 4
gpt4 key购买 nike

我想调整 stackedWidget 的高度这样QTextEdit的高度它下面的小部件与 stackedWidget 的事件页面上的按钮高度相匹配。 。而4 QPushButton在页上extended占据stackedWidget的整个空间, 2 QPushButton在页上normal垂直出现在中间,并且上方和下方仍然有自由空间。

但是 2 QPushButton在页上normal应该在顶部,QTextEdit小部件应该向上放大。如何做到这一点?

<小时/>

main.py
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.uic import loadUi


class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
loadUi("mainwindow.ui", self)


def main():
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())


if __name__ == "__main__":
main()
<小时/>

主窗口.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>601</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="locale">
<locale language="English" country="UnitedKingdom"/>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QStackedWidget" name="stackedWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="normal" native="true">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QPushButton" name="normal_start_button">
<property name="text">
<string>Start</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="normal_stop_button">
<property name="text">
<string>Stop</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="extended">
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QPushButton" name="extended_quick_start_button">
<property name="text">
<string>Quick Start</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="extended_stop_button">
<property name="text">
<string>Stop</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="extended_slow_start_button">
<property name="text">
<string>Slow Start</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="extended_pause_button">
<property name="text">
<string>Pause</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item row="1" column="0">
<widget class="QTextEdit" name="output"/>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>24</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
<小时/>

页面截图normal只有 2 QPushButton以及上方和下方未使用的空间:

Screenshot of page <code>normal</code>

<小时/>

页面截图extended与 4 QPushButton以及可用空间的最佳利用:

Screenshot of page <code>extended</code>

最佳答案

QStackedWidget 将其包含的小部件的默认最大高度作为默认高度,因此在这种情况下,一个可能的解决方案是引用当前小部件的默认高度来设置高度。

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.uic import loadUi


class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
loadUi("mainwindow.ui", self)
self.stackedWidget.currentChanged.connect(self.adjustHeight)
self.adjustHeight()

def adjustHeight(self):
h = self.stackedWidget.currentWidget().sizeHint().height()
self.stackedWidget.setFixedHeight(h)


def main():
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()

def onTimeout():
sw = main_window.stackedWidget
sw.setCurrentIndex((sw.currentIndex() + 1) % sw.count())

# test
from PyQt5.QtCore import QTimer

timer = QTimer(timeout=onTimeout)
timer.start(1000)

sys.exit(app.exec_())


if __name__ == "__main__":
main()

关于python - 自动将 `stackedWidget` 页面的高度调整为放置在其上的小部件的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59922115/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com