PyQt - 调整父组件大小以适应子组件

1 投票
1 回答
1144 浏览
提问于 2025-04-16 18:28

这是一个主要的控件,里面有一个标签页控件。

问题是,当我运行它的时候,只有部分标签页显示出来(如附图所示)。所以,你需要调整大小或者滚动标签页才能看到最后一个。

在这里输入图片描述

我该怎么设置才能让窗口一开始就显示所有标签页呢?

import sys
from PyQt4.QtGui import *

class MainWindow(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        # making tabs
        tabs = QTabWidget()
        tabs.addTab(QWidget(), '111111')
        tabs.addTab(QWidget(), '222222')
        tabs.addTab(QWidget(), '333333')
        tabs.addTab(QWidget(), '444444')

        # inserting in vbox
        vbox = QVBoxLayout(self)
        vbox.addWidget(tabs)

app = QApplication(sys.argv)
myapp = MainWindow()
myapp.show()
sys.exit(app.exec_())

我怎么才能让它调整大小以显示所有标签页呢?
问题出在哪里呢?是父控件、标签页,还是垂直盒子(vbox)?

1 个回答

3

你可以使用 QTabWidget.setUsesScrollButtons(bool) 这个方法来设置是否使用滚动按钮。

import sys
from PyQt4.QtGui import *

class MainWindow(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        # making tabs
        tabs = QTabWidget()
        tabs.setUsesScrollButtons(False) #here is

        tabs.addTab(QWidget(), '111111')
        tabs.addTab(QWidget(), '222222')
        tabs.addTab(QWidget(), '333333')
        tabs.addTab(QWidget(), '444444')
        # inserting in vbox
        vbox = QVBoxLayout(self)
        vbox.addWidget(tabs)

app = QApplication(sys.argv)
myapp = MainWindow()
myapp.show()
sys.exit(app.exec_())

http://doc.qt.nokia.com/4.7/qtabwidget.html#usesScrollButtons-prop

撰写回答