zoukankan      html  css  js  c++  java
  • PyQt4网格布局

    最通用的布局类别是网格布局(QGridLayout)。该布局方式将窗口空间划分为许多行和列。要创建该布局方式,我们需要使用QGridLayout类。

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    
    import sys
    from PyQt4 import QtGui
    
    class GridLayout(QtGui.QWidget):
        def __init__(self, parent = None):
            QtGui.QWidget.__init__(self)
            self.setWindowTitle('grid layout')
            names = ['Cls', 'Bck', '', 'Close', '7', '8', '9', '/',
                     '4', '5', '6', '*', '1', '2', '3',
                     '-', '0', '.', '=', '+']
            grid= QtGui.QGridLayout()
            pos = [(x, y) for x in range(5) for y in range(4)]
            for i in range(len(pos)):
                button = QtGui.QPushButton(names[i])
                if i == 2:
                    grid.addWidget(QtGui.QLabel(''), 0, 2)
                else:
                    grid.addWidget(button, pos[i][0], pos[i][1])
            self.setLayout(grid)
            
    app = QtGui.QApplication(sys.argv)
    box = GridLayout()
    box.show()
    sys.exit(app.exec_())

    效果:

    在这个示例中,我们创建了一组按网格布局的按钮。为了填补bck和Close按钮之间的空白,我们使用QLabel部件。

    grid= QtGui.QGridLayout()

    该语句创建了一个网格布局。

                if i == 2:
                    grid.addWidget(QtGui.QLabel(''), 0, 2)
                else:
                    grid.addWidget(button, pos[i][0], pos[i][1])

    使用addWidget()方法,我们将部件加入到网格布局中。addWidget()方法的参数依次为要加入到局部的部件,行号和列号。


    部件在网格布局中可以跨与多行或多列。我们将在下面的示例中演示该情况。

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    
    import sys
    from PyQt4 import QtGui
    
    class GridLayout(QtGui.QWidget):
        def __init__(self, parent = None):
            QtGui.QWidget.__init__(self)
            self.setWindowTitle('grid layout')
            
            title = QtGui.QLabel('Title')
            author = QtGui.QLabel('Author')
            review = QtGui.QLabel('Review')
            
            titleEdit = QtGui.QLineEdit()
            authorEdit = QtGui.QLineEdit()
            reviewEdit = QtGui.QLineEdit()
            
            grid = QtGui.QGridLayout()
            grid.setSpacing(10)
            
            grid.addWidget(title, 1, 0)
            grid.addWidget(titleEdit, 1, 1)
            
            grid.addWidget(author, 2, 0)
            grid.addWidget(authorEdit, 2, 1)
            
            grid.addWidget(review, 3, 0)
            grid.addWidget(reviewEdit, 3, 1, 5, 1)
            
            self.setLayout(grid)
            self.resize(350, 300)
            
    app = QtGui.QApplication(sys.argv)
    box = GridLayout()
    box.show()
    sys.exit(app.exec_())

    效果:

            grid = QtGui.QGridLayout()
            grid.setSpacing(10)

    通过以上两句,我们创建了一个布局管理器,并将该布局管理器中的部件间隔(同行的横向间隔)设为10个字距。

            grid.addWidget(reviewEdit, 3, 1, 5, 1)

    我们可以为加入网格布局的部件设置行列跨度,在上面的语句中,我们将reviewEdit部件的行跨度设为5,列跨度设为1。

  • 相关阅读:
    Markdown 图片与图床使用
    gitignore
    设置或更改Mac文件的默认打开程序
    Hive时间处理
    csv大文件处理方案-数据量超表格最大容纳行数解决方案
    js中的闭包之我理解
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(73)-微信公众平台开发-消息管理
    关于23种设计模式的有趣见解
    一步一步写算法(之 算法总结)
    ajax跨域通信-博客园老牛大讲堂
  • 原文地址:https://www.cnblogs.com/moonlightpoet/p/5328573.html
Copyright © 2011-2022 走看看