如何制作带有滚动条的 pyqt 选项卡式界面?

Posted

技术标签:

【中文标题】如何制作带有滚动条的 pyqt 选项卡式界面?【英文标题】:how to make a pyqt tabbed interface with scroll bars? 【发布时间】:2013-06-08 17:55:20 【问题描述】:

如何在 Qt 中为标签式界面提供独立的滚动条?这是我试过的,但是没有滚动条,而且一切都很小。

import sys
from PyQt4 import QtGui


def main():

    app = QtGui.QApplication(sys.argv)

    window = QtGui.QWidget()
    window.setWindowTitle('Scrolling Tabs Example')

    tab1 = QtGui.QScrollArea()
    tab1_layout = QtGui.QVBoxLayout(tab1)

    text_browser_1 = QtGui.QTextBrowser()
    tab1_layout.addWidget(text_browser_1)
    text_browser_2 = QtGui.QTextBrowser()
    tab1_layout.addWidget(text_browser_2)
    text_browser_3 = QtGui.QTextBrowser()
    tab1_layout.addWidget(text_browser_3)
    text_browser_4 = QtGui.QTextBrowser()
    tab1_layout.addWidget(text_browser_4)
    text_browser_5 = QtGui.QTextBrowser()
    tab1_layout.addWidget(text_browser_5)
    text_browser_6 = QtGui.QTextBrowser()
    tab1_layout.addWidget(text_browser_6)
    text_browser_7 = QtGui.QTextBrowser()
    tab1_layout.addWidget(text_browser_7)

    tab2 = QtGui.QScrollArea()
    tab2_layout = QtGui.QVBoxLayout(tab2)

    button_1 = QtGui.QPushButton()
    tab2_layout.addWidget(button_1)
    button_2 = QtGui.QPushButton()
    tab2_layout.addWidget(button_2)
    button_3 = QtGui.QPushButton()
    tab2_layout.addWidget(button_3)

    tab_widget = QtGui.QTabWidget()
    tab_widget.addTab(tab1, "Tab 1")
    tab_widget.addTab(tab2, "Tab 2")
    main_layout = QtGui.QVBoxLayout()
    main_layout.addWidget(tab_widget)
    main_layout.addStretch(1)
    window.setLayout(main_layout)
    window.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

【问题讨论】:

【参考方案1】:

您错误地使用了 QScrollArea。您需要使用QScrollArea::setWidget 设置将在区域中显示的小部件,然后将内容添加到该小部件。您还需要指定setWidgetResizable(true)

tab1 = QtGui.QScrollArea()
tab1.setWidget(QtGui.QWidget())
tab1_layout = QtGui.QVBoxLayout(tab1.widget())
tab1.setWidgetResizable(True)

【讨论】:

太棒了,谢谢。有没有办法让整个 QTabWidget 也可以调整大小?现在,如果您更改窗口大小,它会缩小但不会扩大。 这是因为您使用main_layout.addStretch(1) 添加了一个空格。尝试删除它。

以上是关于如何制作带有滚动条的 pyqt 选项卡式界面?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PyQt5 Python 中更改表格小部件中滚动条的颜色

如何在 HTML 中制作选项卡式视图?

markdown 选项卡式导航(滚动更改)

addwidget显示滚动轴

如何在 Tkinter 中获得带有滚动条的 Frame?

VC中怎么滚动条宽度怎么解决