如何制作带有滚动条的 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 选项卡式界面?的主要内容,如果未能解决你的问题,请参考以下文章