一、新建六个label,命名为1~6,然后显示,代码和运行结果如下
import sys from PyQt5.QtWidgets import QLabel,QGridLayout,QWidget,QApplication if __name__ == "__main__": app = QApplication(sys.argv) win = QWidget() #新建一个窗口 win.resize(640, 480) #窗口大小为640X480 grid = QGridLayout(win) label1 = QLabel("11111111") #新建 label1,命名为11111111 label2 = QLabel("22222222") #新建 label1,命名为22222222 label3 = QLabel("33333333") #新建 label1,命名为33333333 label4 = QLabel("44444444") #新建 label1,命名为44444444 label5 = QLabel("55555555") #新建 label1,命名为55555555 label6 = QLabel("66666666") #新建 label1,命名为66666666 label1.setStyleSheet("background-color:red") #label1设置为红色 label2.setStyleSheet("background-color:green") #label2设置为绿色 label3.setStyleSheet("background-color:blue") #label3设置为蓝色 label4.setStyleSheet("background-color:yellow") #label4设置为黄色 label5.setStyleSheet("background-color:pink") #label5设置为粉色 label6.setStyleSheet("background-color:purple") #label6设置为紫色 grid.addWidget(label1, 0, 0) #label布置在第0行第0例 grid.addWidget(label2, 1, 0) #label布置在第1行第0例 grid.addWidget(label3, 1, 1) #label布置在第1行第1例 grid.addWidget(label4, 2, 0) #label布置在第2行第0例 grid.addWidget(label5, 2, 1) #label布置在第2行第0例 grid.addWidget(label6, 3, 1) #label布置在第3行第0例 win.show() #显示窗口 sys.exit(app.exec_())
二、修改label1占据四列,代码和结果如下。
import sys
from PyQt5.QtWidgets import QLabel,QGridLayout,QWidget,QApplication
if __name__ == "__main__":
app = QApplication(sys.argv)
win = QWidget() #新建一个窗口
win.resize(640, 480) #窗口大小为640X480
grid = QGridLayout(win)
label1 = QLabel("11111111") #新建 label1,命名为11111111
label2 = QLabel("22222222") #新建 label1,命名为22222222
label3 = QLabel("33333333") #新建 label1,命名为33333333
label4 = QLabel("44444444") #新建 label1,命名为44444444
label5 = QLabel("55555555") #新建 label1,命名为55555555
label6 = QLabel("66666666") #新建 label1,命名为66666666
label1.setStyleSheet("background-color:red") #label1设置为红色
label2.setStyleSheet("background-color:green") #label2设置为绿色
label3.setStyleSheet("background-color:blue") #label3设置为蓝色
label4.setStyleSheet("background-color:yellow") #label4设置为黄色
label5.setStyleSheet("background-color:pink") #label5设置为粉色
label6.setStyleSheet("background-color:purple") #label6设置为紫色
grid.addWidget(label1, 0, 0, 1, 4) #label1布置在第0行第0例,占据4行1例
grid.addWidget(label2, 1, 0) #label布置在第1行第0例
grid.addWidget(label3, 1, 1) #label布置在第1行第1例
grid.addWidget(label4, 2, 0) #label布置在第2行第0例
grid.addWidget(label5, 2, 1) #label布置在第2行第0例
grid.addWidget(label6, 3, 1) #label布置在第3行第0例
win.show() #显示窗口
sys.exit(app.exec_())
程序运行结果,其他label都被压缩,label1被拉伸4倍,因为其他label最多只占两例,因此在整个窗口比例中其他窗口只占一半
三、在步骤二基础上修改label4占据两行,代码和结果如下。
import sys
from PyQt5.QtWidgets import QLabel,QGridLayout,QWidget,QApplication
if __name__ == "__main__":
app = QApplication(sys.argv)
win = QWidget() #新建一个窗口
win.resize(640, 480) #窗口大小为640X480
grid = QGridLayout(win)
label1 = QLabel("11111111") #新建 label1,命名为11111111
label2 = QLabel("22222222") #新建 label1,命名为22222222
label3 = QLabel("33333333") #新建 label1,命名为33333333
label4 = QLabel("44444444") #新建 label1,命名为44444444
label5 = QLabel("55555555") #新建 label1,命名为55555555
label6 = QLabel("66666666") #新建 label1,命名为66666666
label1.setStyleSheet("background-color:red") #label1设置为红色
label2.setStyleSheet("background-color:green") #label2设置为绿色
label3.setStyleSheet("background-color:blue") #label3设置为蓝色
label4.setStyleSheet("background-color:yellow") #label4设置为黄色
label5.setStyleSheet("background-color:pink") #label5设置为粉色
label6.setStyleSheet("background-color:purple") #label6设置为紫色
grid.addWidget(label1, 0, 0, 1, 4) #label1布置在第0行第0例,占据4行1例
grid.addWidget(label2, 1, 0) #label布置在第1行第0例
grid.addWidget(label3, 1, 1) #label布置在第1行第1例
grid.addWidget(label4, 2, 0, 2, 1) #label布置在第2行第0例,占据2行1例
grid.addWidget(label5, 2, 1) #label布置在第2行第0例
grid.addWidget(label6, 3, 1) #label布置在第3行第0例
win.show() #显示窗口
sys.exit(app.exec_())
程序运行结果,label4占据两例,其他label保持不变
四、使用setRowStretch方法进对行进行拉伸,代码和结果如下
import sys
from PyQt5.QtWidgets import QLabel,QGridLayout,QWidget,QApplication
if __name__ == "__main__":
app = QApplication(sys.argv)
win = QWidget() #新建一个窗口
win.resize(640, 480) #窗口大小为640X480
grid = QGridLayout(win)
label1 = QLabel("11111111") #新建 label1,命名为11111111
label2 = QLabel("22222222") #新建 label1,命名为22222222
label3 = QLabel("33333333") #新建 label1,命名为33333333
label4 = QLabel("44444444") #新建 label1,命名为44444444
label5 = QLabel("55555555") #新建 label1,命名为55555555
label6 = QLabel("66666666") #新建 label1,命名为66666666
label1.setStyleSheet("background-color:red") #label1设置为红色
label2.setStyleSheet("background-color:green") #label2设置为绿色
label3.setStyleSheet("background-color:blue") #label3设置为蓝色
label4.setStyleSheet("background-color:yellow") #label4设置为黄色
label5.setStyleSheet("background-color:pink") #label5设置为粉色
label6.setStyleSheet("background-color:purple") #label6设置为紫色
grid.addWidget(label1, 0, 0, 1, 4) #label1布置在第0行第0例,占据4行1例
grid.addWidget(label2, 1, 0) #label布置在第1行第0例
grid.addWidget(label3, 1, 1) #label布置在第1行第1例
grid.addWidget(label4, 2, 0, 2, 1) #label布置在第2行第0例,占据2行1例
grid.addWidget(label5, 2, 1) #label布置在第2行第0例
grid.addWidget(label6, 3, 1) #label布置在第3行第0例
grid.setRowStretch(0, 1) #使用setRowStretch行拉伸,将第0行拉伸1倍
win.show() #显示窗口
sys.exit(app.exec_())
被程序运行结果,整个窗口绝大部分都label1占据
五、在步骤四的基础上,想要恢复步骤三的显示内容,则需要将第一行都做一次拉伸,代码和结果如下
import sys
from PyQt5.QtWidgets import QLabel,QGridLayout,QWidget,QApplication
if __name__ == "__main__":
app = QApplication(sys.argv)
win = QWidget() #新建一个窗口
win.resize(640, 480) #窗口大小为640X480
grid = QGridLayout(win)
label1 = QLabel("11111111") #新建 label1,命名为11111111
label2 = QLabel("22222222") #新建 label1,命名为22222222
label3 = QLabel("33333333") #新建 label1,命名为33333333
label4 = QLabel("44444444") #新建 label1,命名为44444444
label5 = QLabel("55555555") #新建 label1,命名为55555555
label6 = QLabel("66666666") #新建 label1,命名为66666666
label1.setStyleSheet("background-color:red") #label1设置为红色
label2.setStyleSheet("background-color:green") #label2设置为绿色
label3.setStyleSheet("background-color:blue") #label3设置为蓝色
label4.setStyleSheet("background-color:yellow") #label4设置为黄色
label5.setStyleSheet("background-color:pink") #label5设置为粉色
label6.setStyleSheet("background-color:purple") #label6设置为紫色
grid.addWidget(label1, 0, 0, 1, 4) #label1布置在第0行第0例,占据4行1例
grid.addWidget(label2, 1, 0) #label布置在第1行第0例
grid.addWidget(label3, 1, 1) #label布置在第1行第1例
grid.addWidget(label4, 2, 0, 2, 1) #label布置在第2行第0例,占据2行1例
grid.addWidget(label5, 2, 1) #label布置在第2行第0例
grid.addWidget(label6, 3, 1) #label布置在第3行第0例
grid.setRowStretch(0, 1) #使用setRowStretch行拉伸,将第0行拉伸1倍
grid.setRowStretch(1, 1) #使用setRowStretch行拉伸,将第1行拉伸1倍
grid.setRowStretch(2, 1) #使用setRowStretch行拉伸,将第2行拉伸1倍
grid.setRowStretch(3, 1) #使用setRowStretch行拉伸,将第3行拉伸1倍
win.show() #显示窗口
sys.exit(app.exec_())
六、对第一例进行例拉伸,代码和结果如下
import sys
from PyQt5.QtWidgets import QLabel,QGridLayout,QWidget,QApplication
if __name__ == "__main__":
app = QApplication(sys.argv)
win = QWidget() #新建一个窗口
win.resize(640, 480) #窗口大小为640X480
grid = QGridLayout(win)
label1 = QLabel("11111111") #新建 label1,命名为11111111
label2 = QLabel("22222222") #新建 label1,命名为22222222
label3 = QLabel("33333333") #新建 label1,命名为33333333
label4 = QLabel("44444444") #新建 label1,命名为44444444
label5 = QLabel("55555555") #新建 label1,命名为55555555
label6 = QLabel("66666666") #新建 label1,命名为66666666
label1.setStyleSheet("background-color:red") #label1设置为红色
label2.setStyleSheet("background-color:green") #label2设置为绿色
label3.setStyleSheet("background-color:blue") #label3设置为蓝色
label4.setStyleSheet("background-color:yellow") #label4设置为黄色
label5.setStyleSheet("background-color:pink") #label5设置为粉色
label6.setStyleSheet("background-color:purple") #label6设置为紫色
grid.addWidget(label1, 0, 0, 1, 4) #label1布置在第0行第0例,占据4行1例
grid.addWidget(label2, 1, 0) #label布置在第1行第0例
grid.addWidget(label3, 1, 1) #label布置在第1行第1例
grid.addWidget(label4, 2, 0, 2, 1) #label布置在第2行第0例,占据2行1例
grid.addWidget(label5, 2, 1) #label布置在第2行第0例
grid.addWidget(label6, 3, 1) #label布置在第3行第0例
grid.setColumnStretch(0,1) #对第0例拉伸1倍
win.show() #显示窗口
sys.exit(app.exec_())
七、与行一样,如果想要恢复步骤五的显示结果,需要对每例都进行拉伸操作,代码和结果如下
import sys
from PyQt5.QtWidgets import QLabel,QGridLayout,QWidget,QApplication
if __name__ == "__main__":
app = QApplication(sys.argv)
win = QWidget() #新建一个窗口
win.resize(640, 480) #窗口大小为640X480
grid = QGridLayout(win)
label1 = QLabel("11111111") #新建 label1,命名为11111111
label2 = QLabel("22222222") #新建 label1,命名为22222222
label3 = QLabel("33333333") #新建 label1,命名为33333333
label4 = QLabel("44444444") #新建 label1,命名为44444444
label5 = QLabel("55555555") #新建 label1,命名为55555555
label6 = QLabel("66666666") #新建 label1,命名为66666666
label1.setStyleSheet("background-color:red") #label1设置为红色
label2.setStyleSheet("background-color:green") #label2设置为绿色
label3.setStyleSheet("background-color:blue") #label3设置为蓝色
label4.setStyleSheet("background-color:yellow") #label4设置为黄色
label5.setStyleSheet("background-color:pink") #label5设置为粉色
label6.setStyleSheet("background-color:purple") #label6设置为紫色
grid.addWidget(label1, 0, 0, 1, 4) #label1布置在第0行第0例,占据4行1例
grid.addWidget(label2, 1, 0) #label布置在第1行第0例
grid.addWidget(label3, 1, 1) #label布置在第1行第1例
grid.addWidget(label4, 2, 0, 2, 1) #label布置在第2行第0例,占据2行1例
grid.addWidget(label5, 2, 1) #label布置在第2行第0例
grid.addWidget(label6, 3, 1) #label布置在第3行第0例
grid.setColumnStretch(0, 1) ##对第0例拉伸1倍
grid.setColumnStretch(1, 1)
grid.setColumnStretch(2, 1)
grid.setColumnStretch(3, 1)
win.show() #显示窗口
sys.exit(app.exec_())