簡體   English   中英

QDockWidget 中的 PyQT5 QScrollBar

[英]PyQT5 QScrollBar within QDockWidget

我在一個窗口中有很多按鈕、lineedits 和其他小部件。 因為它們對於一個窗口來說太多了,所以我喜歡將它們包裝在 QScrollArea 中。 所有這些都應該在 QDockWindow 中。 我的問題:泊塢窗窗口可見且有效,但沒有任何按鈕和滾動條可見。 我正在使用 python 3.6 / PyQT5 我的代碼是:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from pprint import pprint

class DockWindow(QMainWindow):
    def __init__(self,parent=None):
        super(DockWindow, self).__init__(parent)
        layout=QHBoxLayout()
        
        self.docker = QDockWidget()
        self.dockerWidget = QWidget()
        
        self.scroll = QScrollArea()             
        self.widget = QWidget()                 
        self.grid = QGridLayout()               
        
        for i in range(1,50):
            for j in range(1,5):
                object = QPushButton("btn" + str(i) + ";" + str(j))
                self.grid.addWidget(object,i,j)
        
        self.widget.setLayout(self.grid)

        self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.scroll.setWidgetResizable(True)
        self.scroll.setWidget(self.widget)
        self.scrollLayout = QHBoxLayout(self.scroll)
        
        self.dockerWidget.setLayout(self.scrollLayout)
        self.scroll.setGeometry(10, 10, 100, 100)
        self.docker.setWidget(self.dockerWidget)
        
        self.setCentralWidget(QTextEdit())
        
        self.addDockWidget(Qt.RightDockWidgetArea,self.docker)
        self.setGeometry(600, 100, 1000, 900)
        self.setWindowTitle('Scroll Area Demonstration')
        self.show()
        
if __name__ == '__main__':
    app=QApplication(sys.argv)
    demo=DockWindow()
    demo.show()
    sys.exit(app.exec_())

我在 QScrollArea 中看到了PyQt QScrollArea,但這是在 PyQt4 中,當我嘗試將其轉換為 PyQt5 時,再也看不到任何東西了。 我還在PyQt5 中看到了 Qscrollbar,沒有顯示任何內容,但我的代碼中確實有 QScrollArea 的大小。

那么如何使按鈕可見?

是的,這行得通。 代碼現在是:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from pprint import pprint

class DockWindow(QMainWindow):
    def __init__(self,parent=None):
        super(DockWindow, self).__init__(parent)
        layout=QHBoxLayout()
    
        self.docker = QDockWidget()
    
        self.scroll = QScrollArea()             
        self.widget = QWidget()                 
        self.grid = QGridLayout()               
    
        for i in range(1,50):
            for j in range(1,5):
                object = QPushButton("btn" + str(i) + ";" + str(j))
                self.grid.addWidget(object,i,j)
    
        self.widget.setLayout(self.grid)

        self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        self.scroll.setWidgetResizable(True)
        self.scroll.setWidget(self.widget)

        self.docker.setWidget(self.scroll)
        self.scroll.setGeometry(10, 10, 100, 100)
    
        self.setCentralWidget(QTextEdit())
    
        self.addDockWidget(Qt.RightDockWidgetArea,self.docker)
        self.setGeometry(600, 100, 1000, 900)
        self.setWindowTitle('Scroll Area Demonstration')
        self.show()
    
if __name__ == '__main__':
    app=QApplication(sys.argv)
    demo=DockWindow()
    demo.show()
    sys.exit(app.exec_())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM