找回密码
 立即注册
Qt开源社区 门户 查看内容

干货 | 一分钟了解PyQt的绝对定位

2019-9-12 10:18| 发布者: admin| 查看: 995| 评论: 0

摘要: 本篇推文共计1000个字,阅读时间约1分钟。布局管理是GUI编程中的重要部分。布局管理是一种如何在应用窗口上放置组件的方法。我们可以通过两种基本方式来管理布局。绝对定位和布局类。今天我们首先来谈谈的是PyQt编程 ...


本篇推文共计1000个字,阅读时间约1分钟。

布局管理是GUI编程中的重要部分。布局管理是一种如何在应用窗口上放置组件的方法。




我们可以通过两种基本方式来管理布局。

绝对定位和布局类。

今天我们首先来谈谈的是PyQt编程中的绝对定位,绝对定位就是每个控件按程序员自己指定的位置进行放置。

简单明了就是"不要你觉得,要我觉得"。

可能听到这里你一脸懵逼,不知道为什么,下面本文就来为你解释。



当你使用绝对定位,我们首先要了解以下窗口限制:

1.如果我们调整了窗口的大小,窗口里面控件的大小和位置保持不变,不会随着窗口的改变而改变。

2.在不同平台上,应用程序看起来可能会不同。

3.更改字体可能会破坏应用程序的布局。

4.如果决定改变布局,我们必须将每个控件彻底的加以修改,这个过程是很繁琐和耗时的。

我们来看以下代码例子:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
class Example(QWidget):

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

    def initUI(self):
        lbl1 = QLabel('我是一个码农', self)
        lbl1.move(15, 10)

        lbl2 = QLabel('欢迎大家关注本公众号', self)
        lbl2.move(35, 40)

        lbl3 = QLabel('你的支持是我不断前行的动力', self)
        lbl3.move(55, 70)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('绝对定位演示')
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


在我们的例子中使用的都是标签(Label)。我们通过提供x和y的坐标值来定位它们。坐标系的原点是控件的左上角。x值增长是由左到右。y值增长是从上到下。

如下代码截图:

lbl3 = QLabel('你的支持是我不断前行的动力', self)
        lbl3.move(55, 70)


整个程序执行起来如下所示:



总结一下绝对定位的缺点:

1.窗口变化时,要在代码中对每个组件的位置及大小进行调整。

2.标签组件设置固定大小的话,标签组件上的文本可能不会完整显示。

3.不同操作系统的默认字体并不相同,所以固定大小难以实现跨平台。



既然绝对定位有这么多缺点,那我们下期看看

另外一种管理布局的方式,敬请期待。

本文如有任何疑问,可发送疑问至后台,工作人员看到后会第一时间为你解决。

END



图片|网络

编辑|一个码农






你与世界

只差一个

公众号


喜欢本文的话麻烦你点个“关注”加“在看”

觉得写得不错的话可以点击下方“喜欢作者”

你的支持是我不断前行的动力

----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:看那个码农,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了