【问题标题】:how to make a pyqt tabbed interface with scroll bars?如何制作带有滚动条的 pyqt 选项卡式界面?
【发布时间】: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()

【问题讨论】:

    标签: qt python-2.7 tabs pyqt scrollbar


    【解决方案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) 添加了一个空格。尝试删除它。
    猜你喜欢
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    相关资源
    最近更新 更多