2016-02-15 18 views
1

我想要做的是獲得一個堆疊在一起的n個元素的滾動視圖,當它們不足以保證活動滾動條時,它們被推到頂部。 (到目前爲止,我已經設法使用pyQT獲得類似的行爲,但是元素擴展爲適合窗口,我不想這樣做。下面是我試圖複製的一些圖像:如何使用pyQT複製這個tkinter滾動行爲?

當有一個元素(2包括按鈕),它被推向頂部

One element

當有更多的元件,但它仍然所有推頂端

Multiple elements

而元件S時粘性太高,以適應屏幕上,滾動條變得活躍

Many elements

有誰知道我可以在PyQt的做到這一點?如果需要,我可以提供額外的信息。由於

回答

1

你需要把在垂直佈局的窗口小部件,然後在底部添加一個可膨脹的隔:

from PyQt4 import QtCore, QtGui 

class Window(QtGui.QScrollArea): 
    def __init__(self): 
     super(Window, self).__init__() 
     self.setWidgetResizable(True) 
     widget = QtGui.QWidget(self) 
     layout = QtGui.QVBoxLayout(widget) 
     for text in 'One Two Three Four Five Six Seven'.split(): 
      button = QtGui.QPushButton(text) 
      layout.addWidget(button) 
     layout.addStretch() 
     self.setWidget(widget) 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = Window() 
    window.setGeometry(500, 300, 300, 200) 
    window.show() 
    sys.exit(app.exec_())