【问题标题】:Layout is not expanding to the whole window布局未扩展到整个窗口
【发布时间】:2019-01-31 21:12:37
【问题描述】:

我正在编写一个简单的加载屏幕,以备日后需要。我有一段时间没有使用 PyQt,现在一切都在尝试失败。我想要一个几乎扩展到边界尽头的 QProgressBar。但是我得到了这个:

这让我觉得是布局没有扩大。我希望得到您的帮助和经验!谢谢!

我的代码:

class LoadingScren(QWidget):

    def __init__(self):
        super().__init__()

        self.windowWidth = 500
        self.windowHeight = 300
        self.backgroundImage = 'bg.jpg'
        self.icon = 'template_icon.png'
        self.iconWidht = 100
        self.iconHeight = 100
        self.headline = 'Headline'
        self.description = """Lorem ipsum dolor sit amet"""

        self.initUI()

    def initUI(self):
        self.setFixedSize(self.windowWidth, self.windowHeight)
        self.setWindowFlag(Qt.FramelessWindowHint)

        imgIcon = QLabel()
        imgIcon.setPixmap(QPixmap(self.icon).scaled(self.iconWidht, self.iconHeight))

        lblHeadline = QLabel()
        lblHeadline.setText(self.headline)
        lblHeadline.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        lblHeadline.setStyleSheet('font-size: 75px')

        lblDescription = QLabel()
        lblDescription.setScaledContents(True)
        lblDescription.setText(self.description)
        lblDescription.setStyleSheet('font-size: 25px')

        progressBar = QProgressBar()
        progressBar.setMaximumHeight(2)
        progressBar.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

        headerLayout = QHBoxLayout()
        headerLayout.addWidget(imgIcon)
        headerLayout.addWidget(lblHeadline)

        mainLayout = QVBoxLayout()
        mainLayout.addLayout(headerLayout)
        mainLayout.addWidget(lblDescription)
        mainLayout.addItem(QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding))
        mainLayout.addWidget(progressBar)

        self.setLayout(mainLayout)
        self.show()

【问题讨论】:

    标签: python layout pyqt5


    【解决方案1】:

    使用progressBar.setTextVisible(False)

    Qt 样式表progressBar.setStyleSheet(...)

    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtGui     import *
    from PyQt5.QtCore    import *
    
    class LoadingScren(QWidget):
    
        def __init__(self):
            super().__init__()
    
            self.windowWidth  = 500
            self.windowHeight = 300
            #self.backgroundImage = 'bg.jpg'            
            self.icon = 'qt-logo.png'            #'template_icon.png'
            self.iconWidht  = 100
            self.iconHeight = 100
            self.headline = 'Headline'
            self.description = """Lorem ipsum dolor sit amet"""
    
            self.initUI()
    
        def initUI(self):
            self.setFixedSize(self.windowWidth, self.windowHeight)
            self.setWindowFlag(Qt.FramelessWindowHint)
    
            imgIcon = QLabel()
            imgIcon.setPixmap(QPixmap(self.icon).scaled(self.iconWidht, self.iconHeight))
    
            lblHeadline = QLabel()
            lblHeadline.setText(self.headline)
            lblHeadline.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
            lblHeadline.setStyleSheet('font-size: 75px')
    
            lblDescription = QLabel()
            lblDescription.setScaledContents(True)
            lblDescription.setText(self.description)
            lblDescription.setStyleSheet('font-size: 25px')
    
            progressBar = QProgressBar()
            progressBar.setMaximumHeight(2)
            progressBar.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
    
            progressBar.setTextVisible(False)
            # or
            #progressBar.setStyleSheet("""QProgressBar {
            #                              border: 1px solid red;
            #                         }""")
    
            headerLayout = QHBoxLayout()
            headerLayout.addWidget(imgIcon)
            headerLayout.addWidget(lblHeadline)
    
            mainLayout = QVBoxLayout()
            mainLayout.addLayout(headerLayout)
            mainLayout.addWidget(lblDescription)
            mainLayout.addItem(QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding))
            mainLayout.addWidget(progressBar)
    
            self.setLayout(mainLayout)
            self.show()
    
    if __name__ == '__main__':
        app     = QApplication(sys.argv)
        mainWnd = LoadingScren()
        sys.exit(app.exec_())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 2011-04-25
      相关资源
      最近更新 更多