Python旧版课程库
Python第 04 期 - 应用查看课程总览

126 图形化编程 - 布局 1

主要内容

  1. 绝对定位介绍

完成效果

完成本节课程,能学会在程序中指定每个控件的位置和大小(以像素为单位)。

收获

学习完本节内容,我们会了解如何在GUI里对控件进行绝对定位的布局

1.绝对定位介绍

在一个GUI程序里,布局是一个很重要的方面。布局就是如何管理应用中的元素和窗口。有两种方式可以搞定:绝对定位和PyQt5的layout类。 每个程序都是以像素为单位区分元素的位置,衡量元素的大小。所以我们完全可以使用绝对定位搞定每个元素和窗口的位置。但是这也有局限性:
  • 元素不会随着我们更改窗口的位置和大小而变化。
  • 不能适用于不同的平台和不同分辨率的显示器。
  • 更改应用字体大小会破坏布局。
  • 如果我们决定重构这个应用,需要全部计算一下每个元素的位置和大小。
以下就是绝对定位的应用:

import sys
from PyQt5.QtWidgets import QWidget, QLabel, QApplication, QLineEdit, QProgressBar

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()


    def initUI(self):
        lbl1 = QLabel('Dashima ', self)
        # 使用move()方法定位了每一个元素,使用x、y坐标。x、y坐标的原点是程序的左上角,单位为像素。
        lbl1.move(15, 10)  # 这个元素的左上角就在这个程序的左上角开始的(15, 10)的位置

        lbl2 = QLabel('tutorials', self)
        lbl2.move(35, 40)

        lbl3 = QLabel('for programmers', self)
        lbl3.move(55, 70)        

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Absolute')    
        self.show()
    
app = QApplication(sys.argv)    # 创建应用程序
ex = Example()  # 创建窗口对象
sys.exit(app.exec_())   # 设置关闭窗口后结束进程
拓展练习:尝试修改上述三个QLabel的坐标。

小结

  • 学习了如何使用绝对定位修改控件的位置。

习题

  1. 习题1:尝试创建其他控件,比如QProgressBar,QLineEdit,然后用绝对定位修改它们的位置。