zoukankan      html  css  js  c++  java
  • PyQt5 -day3-3 格栅布局 又叫 网格布局

    格栅布局的 坐标分布

     1 import sys
     2 from PyQt5.QtWidgets import QWidget,QPushButton,QApplication,QGridLayout,QLCDNumber
     3 # 需要导入QGridLayout
     4 
     5 class Example(QWidget):
     6     def __init__(self):
     7         super().__init__()
     8         self.Init_UI()
     9     def Init_UI(self):
    10         grid = QGridLayout()
    11         self.setLayout(grid)
    12 
    13         self.setGeometry(300,300,400,300)
    14         self.setWindowTitle('格栅布局')
    15 
    16         self.lcd = QLCDNumber()
    17         grid.addWidget(self.lcd,0,0,3,0)
    18         # 括号内参数的含义 : 控件,起始行,起始列, 所占行数,所占列数
    19         grid.setSpacing(10)
    20         #设置每个控件之间的间距,包括水平间距 和 垂直间距
    21 
    22         names = ['Cls', 'Bc', '', 'Close',
    23                  '7', '8', '9', '/',
    24                  '4', '5', '6', '*',
    25                  '1', '2', '3', '-',
    26                  '0', '.', '=', '+']
    27         positions = [(i,j)for i in range(4,9)for j in range(4,8)]
    28         for position,name in zip(positions,names):
    29             print(position)
    30 
    31             if name == '':
    32                 continue
    33             button = QPushButton(name)
    34             grid.addWidget(button,*position)
    35             button.clicked.connect(self.Cli)
    36 
    37         self.show()
    38 
    39     def Cli(self):
    40         sender = self.sender().text()
    41         ls = ['/', '*', '-', '=', '+']
    42         if sender in ls:
    43             self.lcd.display('A')
    44         else:
    45             self.lcd.display(sender)
    46 
    47 if __name__ == '__main__':
    48     app = QApplication(sys.argv)
    49     ex = Example()
    50     sys.exit(app.exec_())
     
    position是一个表示位置的元组
    当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用*和**前缀。这种方法在函数需要获取可变数量的参数的时候特别有用。
    所以在此处使用*position
    [注意]
    [1] 由于在args变量前有*前缀,所有多余的函数参数都会作为一个元组存储在args中。如果使用的是**前缀,多余的参数则会被认为是一个字典的健/值对。
    [2] 对于def func(*args):,*args表示把传进来的位置参数存储在tuple(元组)args里面。例如,调用func(1, 2, 3),args就表示(1, 2, 3)这个元组。
    [3] 对于def func(**args):,**args表示把参数作为字典的健-值对存储在dict(字典)args里面。例如,调用func(a='I', b='am', c='wcdj'),args就表示{'a':'I', 'b':'am', 'c':'wcdj'}这个字典。
    [4] 注意普通参数与*和**参数公用的情况,一般将*和**参数放在参数列表最后。
  • 相关阅读:
    20150515
    20150509
    20150507
    好用的log打印类
    20150429
    Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
    word无法切换中文输入法的解决方法
    20140917设置动态壁纸
    WCF入门教程(三)定义服务协定--属性标签
    WCF入门教程(二)从零做起-创建WCF服务
  • 原文地址:https://www.cnblogs.com/jiayou888888/p/8532754.html
Copyright © 2011-2022 走看看