2019-02-05 8 关于QLayout的用法

QLayout是一个抽象类,不可视,只能用来布局窗口的表现方式。

QHBoxLayout和QVBoxLayout是一对用于布局的抽象类;

1 一个窗口采用一个Layout的语句是:self.setLayout( obj_layout )

2 layout的种类有三种:h_box = QtWidgets.QHBoxLayout(),al_box = QtWidgets.QVBoxLayout(),和 gridLayout =QGridLayout()

3 QGroupBox是组件的集合

4 layout内部可以嵌套组件或者layout,其语句是h_box.addWidget(self.b1) 和 al_box.addLayout(v_box)

addStretch(1),这个函数如何确定其中的参数大小,这里简单的说一下。addStretch函数的作用是在布局器中增加一个伸缩量,里面的参数表示QSpacerItem的个数,默认值为零,会将你放在layout中的空间压缩成默认的大小。例如用addStretch函数实现将QHBoxLayout的布局器的空白空间分配。

6 布局的类型有以下几种:
【绝对位置】

#coding = 'utf-8' 

 import sys from PyQt5.QtWidgets import (QWidget, QPushButton, QApplication) 

 class Example(QWidget): 

 def __init__(self): 

     super().__init__() 

     self.Init_UI() 

def Init_UI(self): 

     self.setGeometry(300,300,400,300) 

     self.setWindowTitle('学点编程吧') 

     bt1 = QPushButton('剪刀',self) 

     bt1.move(50,250) bt2 = QPushButton('石头',self) 

     bt2.move(150,250) bt3 = QPushButton('布',self) 

     bt3.move(250,250) self.show() 

 if __name__ == '__main__': 

     app = QApplication(sys.argv) 

     ex = Example() 

     app.exit(app.exec_())

当您使用绝对定位时,我们必须了解以下限制:

如果我们调整窗口大小,则小部件的大小和位置不会改变

各种平台上的应用可能会有所不同

在我们的应用程序中更改字体可能会损坏布局

如果我们决定改变我们的布局,我们必须彻底重做布局,这很浪费时间

【 箱式布局 】


import sys

from PyQt5.QtWidgetsimport (QWidget, QPushButton, QApplication, QHBoxLayout)

class Example(QWidget):

def __init__(self):

    super().__init__()

    self.Init_UI()

def Init_UI(self):

        self.setGeometry(300,300,400,300)

        self.setWindowTitle('学点编程吧')

        bt1 = QPushButton('剪刀',self)

        bt2 = QPushButton('石头',self)

        bt3 = QPushButton('布',self)

        hbox = QHBoxLayout()

        hbox.addStretch(1)#增加伸缩量

        hbox.addWidget(bt1)

        hbox.addStretch(1)#增加伸缩量

        hbox.addWidget(bt2)

        hbox.addStretch(1)#增加伸缩量

        hbox.addWidget(bt3)

        hbox.addStretch(4)#增加伸缩量

        self.setLayout(hbox)

self.show()

    if __name__ =='__main__':

    app = QApplication(sys.argv)

    ex = Example()

    app.exit(app.exec_())


栅格布局


表单布局,编辑伙伴


实验代码:

import sys

from PyQt5import QtWidgets

class Window(QtWidgets.QWidget):

def __init__(self):

super().__init__()

self.init_ui()

def init_ui(self):

self.le = QtWidgets.QLineEdit()

self.b = QtWidgets.QPushButton('Push Clear')

self.le1 = QtWidgets.QLineEdit()

self.b1 = QtWidgets.QPushButton('Clear')

v_box = QtWidgets.QVBoxLayout()

v_box.addWidget(self.le)

v_box.addWidget(self.b)

h_box = QtWidgets.QHBoxLayout()

h_box.addWidget(self.le1)

h_box.addWidget(self.b1)

al_box = QtWidgets.QVBoxLayout()

al_box.addLayout(v_box)

al_box.addLayout(h_box)

# al_box.addStretch(1)

        text = QtWidgets.QTextEdit()

al_box.addWidget(text)

self.setLayout(al_box)

self.setWindowTitle('PyQt5 Lesson 6')

self.show()

app = QtWidgets.QApplication(sys.argv)

a_window = Window()

# a_window.resize(800,600)

sys.exit(app.exec_())

你可能感兴趣的:(2019-02-05 8 关于QLayout的用法)