自学PyQt5(二)| 窗口的布局管理


自学PyQt5(一)|用两种编程风格创建一个基础窗口中,我们对窗口的初始化与循环方法做了了解,并使用了一些基础的对窗口设置的方法,也了解了使用PyQt5的代码风格。这篇文章中我们记录一些PyQt5窗口布局管理的内容。


一. 绝对布局
1. 绝对布局的例子

对窗口布局最简单的方法是绝对布局法,即通过指定像素的方法进行控件布局。我们来看一个例子:

import sys
from PyQt5.QtWidgets import QApplication,\
                            QWidget,\
                            QLabel

class MyWindow(QWidget):

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

        self.setMyLabel()
        self.setMyWindow()

        pass

    def setMyLabel(self):

        lbl = QLabel('start in the middle',self)
        lbl.move(230,250)

        pass

    def setMyWindow(self):

        self.resize(600,600)
        self.move(0,0)
        self.show()

        pass

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWindow()
    sys.exit(app.exec_())

在这个例子中,我们通过QLabel函数向窗口中添加了一个标签控件,并通过move方法指定了标签的位置,具体效果如下图所示:
在这里插入图片描述
但是当我将窗口放到最大时,原本在窗口正中的标签改变了位置:
在这里插入图片描述

2. 绝对布局的限制

绝对布局具有以下特点:

  • 当我们调整窗口大小时,控件的大小和位置不变
  • 使用绝对布局的GUI程序窗口显示的布局在不同应用程序上看起来不一样
  • 改变字体可能引起绝对布局窗口位置的改变

以上特点造成了当我们的窗口使用绝对布局时,如果我们改变了窗口的某一个布局,我们就必须重做原来的布局。

可见,绝对布局的方法虽然简单,但不具备移植性、不是很实用。


二. 布局类
1. 框布局
(1). 代码示例
import sys
from PyQt5.QtWidgets import QApplication,\
                            QWidget,\
                            QPushButton,\
                            QHBoxLayout,\
                            QVBoxLayout

class MyWindow(QWidget):

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

        self.setMyButton()
        self.setMyWindow()

        pass

    def setMyButton(self):

        button_1 = QPushButton('1')
        button_2 = QPushButton('2')
        button_3 = QPushButton('3')

        hbox = QHBoxLayout()
    
        hbox.addStretch(0)
        hbox.addWidget(button_1)

        hbox.addStretch(1)
        hbox.addWidget(button_2)

        hbox.addStretch(1)
        hb
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值