鱼C论坛

 找回密码
 立即注册
查看: 4451|回复: 1

[技术交流] 温故而知新---PyQt5学习笔记系列---这么多一坨!

[复制链接]
发表于 2015-5-12 20:06:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

0.jpg
0.  哪里来的野生便便!赶紧把这一坨铲出去!!!
虽然它长得还算羞涩,不过还是要铲出去!!

1. OK,PyQt中可木有便便,只有像便便一样堆在一起的,呃……部件。
他们看起来可能像这样 1.jpg
为了不让便便存在于窗口上,PyQt提供了一些让这些部件老实的管理人员:
QVBoxLayout,QHBoxLayout,QGridLayout。


2. QVBoxLayout。
根据深厚的内功心法武功绝学……(在扯淡拖出去切了!)
好吧,根据这货的英文,这应该是一个垂直布局。
                   vertical box layout。
跟我一起念: 垂直!  盒子! 布局!
好好,我不扯淡。。

他的用法呢也很简单。
  1. self.mainLayout = QVBoxLayout()
复制代码

这样就创建了一个垂直布局框。说是框,其实什么也看不出来。此框只在你心中!!

  1.         self.btn_1 = QPushButton('我叫Btn1', self)
  2.         self.btn_2 = QPushButton('我叫Btn2', self)
  3.         self.btn_3 = QPushButton('我叫Btn3', self)
  4.         self.btn_4 = QPushButton('我叫Btn4', self)
  5.         self.btn_5 = QPushButton('我叫Btn5', self)
  6.         self.btn_6 = QPushButton('我叫Btn6', self)
复制代码

创建好6个btn试试效果。
  1.     def set_layout(self):
  2.         self.mainLayout.addWidget(self.btn_1)
  3.         self.mainLayout.addWidget(self.btn_2)
  4.         self.mainLayout.addWidget(self.btn_3)
  5.         self.mainLayout.addWidget(self.btn_4)
  6.         self.mainLayout.addWidget(self.btn_5)
  7.         self.mainLayout.addWidget(self.btn_6)
复制代码

别忘了调用~。
看看效果。
2.jpg
咦?说好的垂直呢?

呃,还少一条。
  1. self.setLayout(self.mainLayout)
复制代码

这句规定了当前窗口使用的布局规则。不过也有这条不能规定的窗口,那个之后再说。
3.jpg
一个不少都有了。

3.  这货就这点能耐?
当然不会。

addLayout(Layout)   添加一个布局。把QHBoxLayout加进去就能当网格用了。
(Q: 等等! QHBoxLayout是啥?
A: 大声跟我念: horizontal! box! layout!
O: )

addStretch(int)   添加int个拉伸到里面。这个拉伸至于他怎么拉不大好说,1个或者多个效果差不多。总之如果插在中间他会把组件放在两头。

addSpacing(int)   添加int个空白到里面。注意是空白不是空格,总之10个以下的效果不明显。0 0

setStretch(int, int)   规定某布局占用的布局比例,这个还是比较实用的,注意下标是从0开始的呦,呃,数学不好,目测又不准建议比例直接按像素,比如(0, 100) (1, 200)化简神马的才不会动脑子!

自然,介绍的比较少,还是附上可(e)爱(xin)的文档~~。
我这么可爱,当然是点我。


4.  QGridLayout。
这个更白话一些,网格布局。
同样,他和上面那俩的属性基本一样。只不过参数有些多。

addWidget(widget, int row, int column)   按规则添加到网格的话这俩参数就够了,从0开始计数。
addWidget(widget, int row, int column, Alignment)   会指定此widget的位置,在这一列(行),如果指定多个在同列(行)会按先后排下去。
注意: 第三个参数接受 Qt.AlignTop之类的。 需要先导入QtCore。完整的是QtCore.Qt.AlignTop。

  1.         self.mainLayout.addWidget(self.btn_1, 0, 0, Qt.AlignTop | Qt.AlignRight)
  2.         self.mainLayout.addWidget(self.btn_2, 0, 1, Qt.AlignTop | Qt.AlignRight)
复制代码

4.jpg

其他的用到的时候翻翻文档吧
别打我,不是我要来的。

相关链接:
点我。
点我!
还有我。

本帖被以下淘专辑推荐:

  • · PyQt|主题: 45, 订阅: 73
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-8 12:31:34 | 显示全部楼层
开始跟各位大神学习pyqt5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 07:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表