1. PyQt4布局部分方法解释说明
在PyQt4中,布局管理器可以用来自动化地将小部件在GUI中放置在正确的位置。布局管理器主要有三种类型:绝对布局(QAbsoulteLayout)、水平布局(QHBoxLayout)和垂直布局(QVBoxLayout)。这里为大家详细介绍布局管理器的使用方法。
1.1 绝对布局
绝对布局通常用于创建较小的应用程序,而且它对于在特定位置放置几个窗口小部件很方便。在绝对布局中,程序员必须手动为每个窗口小部件设置一个位置和大小。
import sys
from PyQt4 import QtGui
class Absolute(QtGui.QWidget):
def __init__(self):
super(Absolute, self).__init__()
self.initUI()
def initUI(self):
lbl1 = QtGui.QLabel('Python', self)
lbl1.move(15, 10)
lbl2 = QtGui.QLabel('PyQt4', self)
lbl2.move(35, 40)
lbl3 = QtGui.QLabel('Examples', self)
lbl3.move(55, 70)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Absolute')
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = Absolute()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
在这个例子中,我们使用了三个标签,每个标签都使用了QLabel类创建而成。在相应的mainwindow的initUI()方法中,我们调用了每个标签的move()方法,为它们在窗口中设置了一个具体的位置(x,y坐标)。最后,我们使用setGeometry()方法来设置整个窗口的大小和位置。
1.2 水平布局与垂直布局
水平布局(QHBoxLayout)和垂直布局(QVBoxLayout)是最常用的布局管理器之一。在水平和垂直布局中,程序员可以使用addStretch()方法来添加弹簧条。弹簧条将占据一个可用空间,从而在布局管理器中创建一个空闲区域。这对于实现居中等效果非常有用。
import sys
from PyQt4 import QtGui
class HBox(QtGui.QWidget):
def __init__(self):
super(HBox, self).__init__()
self.initUI()
def initUI(self):
hbox = QtGui.QHBoxLayout()
btn1 = QtGui.QPushButton('Button 1', self)
btn2 = QtGui.QPushButton('Button 2', self)
btn3 = QtGui.QPushButton('Button 3', self)
btn4 = QtGui.QPushButton('Button 4', self)
hbox.addWidget(btn1)
hbox.addWidget(btn2)
hbox.addStretch(1)
hbox.addWidget(btn3)
hbox.addWidget(btn4)
self.setLayout(hbox)
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('Horizontal layout')
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = HBox()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
在这个例子中,我们使用了四个按钮,分别添加到水平BoxLayout中。我们使用addStretch()方法,并设置拉伸比例为一,来创建一个空架构。这个空架构占用了剩余的布局空间,并将其靠右对齐。最后,我们使用setLayout()方法将所有控件放置在窗口中间。
2. 总结
本文介绍了PyQt4中的布局管理器。绝对布局适用于小型应用程序,而水平布局和垂直布局适用于大小不同的窗口小部件。在布局管理器中,程序员可以添加弹簧条来创建一个空闲区域,从而实现居中等效果。此外,使用布局管理器可以使应用程序具有更好的可拓展性,因为部件的相对位置将依赖于窗口大小和其他因素。