主要内容 #
- 绝对定位介绍
完成效果 #
完成本节课程,能学会在程序中指定每个控件的位置和大小(以像素为单位)。
收获 #
学习完本节内容,我们会了解如何在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:尝试创建其他控件,比如QProgressBar,QLineEdit,然后用绝对定位修改它们的位置。