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] 注意普通参数与*和**参数公用的情况,一般将*和**参数放在参数列表最后。
所以在此处使用*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] 注意普通参数与*和**参数公用的情况,一般将*和**参数放在参数列表最后。
posted on 2018-03-09 11:07 jiayou888888 阅读(253) 评论(0) 编辑 收藏 举报