美文网首页
2019-02-05 8 关于QLayout的用法

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

作者: gongdiwudu | 来源:发表于2019-02-26 09:21 被阅读0次

    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的用法

          本文链接:https://www.haomeiwen.com/subject/mmmmsqtx.html