• 布局管理——盒式布局


    QHBoxLayout和QVBoxLayout分别是水平和垂直对齐控件的基本布局类

    试想一下,我们希望把两个按钮在程序的右下角。

    • 要创建这样一个布局,我们可以使用一横一纵两个框。
    • 要创造必要的空余空间,我们可以添加一个拉伸因子(stretch factor)。

    示例效果如下:

     1 #!/usr/bin/python3
     2 # -*- coding: utf-8 -*-
     3 
     4 """
     5 ZetCode PyQt5 tutorial
     6 
     7 In this example, we position two push
     8 buttons in the bottom-right corner
     9 of the window.
    10 
    11 Author: Jan Bodnar
    12 Website: zetcode.com
    13 Last edited: August 2017
    14 """
    15 
    16 import sys
    17 from PyQt5.QtWidgets import (QWidget, QPushButton,
    18     QHBoxLayout, QVBoxLayout, QApplication)
    19 
    20 
    21 class Example(QWidget):
    22 
    23     def __init__(self):
    24         super().__init__()
    25 
    26         self.initUI()
    27 
    28 
    29     def initUI(self):
    30 
    31         # create two push buttons
    32         okButton = QPushButton("OK")
    33         cancelButton = QPushButton("Cancel")
    34 
    35         hbox = QHBoxLayout()
    36         hbox.addStretch(1)
    37         hbox.addWidget(okButton)
    38         hbox.addWidget(cancelButton)
    39 
    40         vbox = QVBoxLayout()
    41         vbox.addStretch(1)
    42         vbox.addLayout(hbox)
    43 
    44         self.setLayout(vbox)
    45 
    46         self.setGeometry(300, 300, 300, 150)
    47         self.setWindowTitle('Buttons')
    48         self.show()
    49 
    50 
    51 if __name__ == '__main__':
    52 
    53     app = QApplication(sys.argv)
    54     ex = Example()
    55     sys.exit(app.exec_())

    这个例子在窗口的右下角放置了两个按钮。当我们调整应用程序窗口的大小时,他们是固定在右下角的。我们同时使用HBoxLayout 和QVBoxLayout布局。

    hbox = QHBoxLayout()
    hbox.addStretch(1)
    hbox.addWidget(okButton)
    hbox.addWidget(cancelButton)

    我们创建了一个水平box布局,添加了拉伸因子(addStretch),添加(addWidget)两个按钮。在添加两个按钮之前增加了一个拉伸因子,这可以将两个按钮推到窗口右侧。

    vbox = QVBoxLayout()
            vbox.addStretch(1)
            vbox.addLayout(hbox)

    要得到我们想要的布局,还需将横向布局放入垂直的布局中。在垂直框上的拉伸因子会将水平框包括里面的控件推至窗口的底部。

    self.setLayout(vbox)

    最后,我们设置窗口的主布局。

  • 相关阅读:
    MySQL explain,Extra分析(转)
    MySQL explain,type分析(转)
    HTTP报文结构和内容(转)
    linux 环境 Xshell操作数据库
    服务器线上问题排查研究
    服务性能指标:PV、UV、TPS、QPS
    Git推送错误Remote: User permission denied错误解决方法
    SQL Server表关联
    SQL Server执行计划
    C#正则Groups高级使用方法
  • 原文地址:https://www.cnblogs.com/fuqia/p/8733338.html
Copyright © 2020-2023  润新知