PyQt4 tutorial读书笔记(3)--layout management
来源:互联网 发布:淘宝量子统计在哪里看 编辑:程序博客网 时间:2024/06/03 20:28
Layout management in PyQt4
==》总述:布局管理是我们在窗口上摆放小部件的方式。这种管理方式可以用两种基本方法来做。
(1)绝对布局(2)layout classes
一、Absolute positioning
1、程序指定了每个控件的位置和大小(以像素为单位)。但当你使用绝对布局的时候,必须接受一些限制:
(1)如果我们调整了窗口的大小,控件的位置和大小不会改变.
(2)在不同平台上应用的显示可能不一样。
(3)在应用中改变字体可能会破坏布局
(4)如果我们决定修改布局,我们必须重做布局,这是非常无聊并且浪费时间。
lbl1 = QtGui.QLabel('first',self) lbl1.move(15,30) lbl2 = QtGui.QLabel('second',self) lbl2.move(25,60) lbl3 = QtGui.QLabel('third',self) lbl3.move(35,110) self.setGeometry(300,300,250,150) self.setWindowTitle('abslution') self.show()
二、layout classes
1、Box layout
class Example(QtGui.QWidget): def __init__(self): super(Example, self).__init__() self.initUI() def initUI(self): okButton = QtGui.QPushButton("OK") cancelButton = QtGui.QPushButton("Cancel") hbox = QtGui.QHBoxLayout() hbox.addWidget(okButton) hbox.addStretch(1) hbox.addWidget(cancelButton) vbox = QtGui.QVBoxLayout() vbox.addStretch(1) vbox.addLayout(hbox) self.setLayout(vbox) self.setGeometry(300, 300, 300, 150) self.setWindowTitle('Buttons') self.show()
(1) QtGui.QHBoxLayout 和 QtGui.QVBoxLayout是layout classes里面的两个基础类,用来控制控件水平或者垂直排列。
(2)
hbox.addWidget(okButton)hbox.addStretch(1)hbox.addWidget(cancelButton)
addWidget:在布局里面增加控件。
addStretch():我查了半天也不知道它怎么样使用最恰当,里面参数数字我改来改去也没啥变化,修改它在的位置,能够控制空白所在的地方。上面就是两个按钮之间。
vbox.addStretch(1)vbox.addLayout(hbox)
这个就属于空白在hbox布局之上。这个空白就像弹簧,根据你其他控件的大小来填充。
2、QtGui.QGridLayout
text = QtGui.QTextEdit() hBox = QtGui.QHBoxLayout() hBox.addWidget(text) vBox = QtGui.QVBoxLayout() vBox.addLayout(hBox) grid = QtGui.QGridLayout() vBox.addLayout(grid) names = ['Cls', 'Bck', '', 'Close', '7', '8', '9', '/', '4', '5', '6', '*', '1', '2', '3', '-', '0', '.', '=', '+'] positions = [(i,j) for i in range(5) for j in range(4)] for position,name in zip(positions,names): if name == '': continue btn = QtGui.QPushButton(name,self) grid.addWidget(btn,*position) self.setLayout(vBox) self.move(300,300) self.show()
弄了半天文本框和按钮大小还是弄不好,文本框高度过高,几乎两者是一半一半比例,不知道为啥,把文本框当成grid中一员,也没能成功让它高度减小。
==>果然还是不熟悉的原因,QtGui.QLineEdit(self)改成这个就是一行的文本框了。
(1)grid.setSpacing(10)
我们创建一个网格布局,设置组件之间的间距。
(2)grid.addWidget(reviewEdit, 3, 1, 5, 1)
如果我们将一个小部件添加到网格,我们可以提供小部件的行和列的跨度跨越。在我们的例子中,我们让reviewEdit部件跨度5行。
- PyQt4 tutorial读书笔记(3)--layout management
- PyQt4 tutorial读书笔记(2)
- PyQt4 tutorial读书笔记(1)基础篇
- PyQt4 tutorial读书笔记(5)-- Dialog
- PyQt4 tutorial读书笔记(6)-- widgets
- PyQt4 tutorial读书笔记(9)-- Drawing
- PyQt4 tutorial读书笔记(4)-- events and signals
- PyQt4 tutorial读书笔记(7)-- Drag and Drop拖放
- PyQt4 tutorial读书笔记(8)-- custom widgets自定义控件
- 《QuickTest Professional Tutorial》读书笔记(3)
- Layout management in wxWidgets
- Layout management in PyQt5
- Beginning Adaptive Layout Tutorial
- Beginning Auto Layout Tutorial
- 第六章序-布局管理(Chapter 6. Layout Management)
- 《J2EE Tutorial中文版》读书笔记(1)
- Qt基础 - Qt Layout Management
- Adaptive Layout Tutorial: Getting Started
- Spark入门到精通视频学习资料--第八章:项目实战(2讲)
- post和get的区别(转自 tawa08 )
- 摩尔的预言 唯有CUDA才是终极的CPU
- 【poj 3261】后缀数组
- linux iostat命令详解和使用实例(磁盘操作监控工具)
- PyQt4 tutorial读书笔记(3)--layout management
- SQL server 2005 如何批量修改架构名(包括表名和存储过程名)
- ASP.NET MVC 3.0前后台统一验证类UniValidate,附源码 转载
- Android LayoutInflater详解
- Ubuntu服务器安装vncserver实现图形化访问
- ubuntu14.04升级后system settings里面的东西基本都没了
- vbox runtime error -102
- Android 中的super() As
- Android关联源码support-v4的问题解决