Pyqt5利用QGridLayout实现计算器界面设计
本文主要介绍利用QGridLayout实现计算器界面设计,详细代码如下
from PyQt5.QtWidgetsimport *
import sys
class WinForm(QWidget):
def __init__(self):
super(WinForm, self).__init__(parent=None)
self.initUI()
def initUI(self):
'''1.创建QGridLayout布局,并设置为窗口的布局'''
grid = QGridLayout()
self.setLayout(grid)
'''2.创建按钮的标签列表'''
names = ['Cls', 'Back', '', 'Close', '7', '8', '9', '/', '4', '5', '6', '*', '1', '2', '3', '-', '0', '.', '=',
'+']
'''3.在网格中构建一个二维positions列表'''
positions = [(i, j)for iin range(5)for jin range(4)]
'''4.创建按钮,并通过addWidget()方法添加到布局中
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
'''# name:依次遍历names赋值给name;position:依次遍历列表positions赋值(元组)给position
for position, namein zip(positions, names):
if name =='':
continue
print(name,*position)
button = QPushButton(name)
grid.addWidget(button, *position)
self.move(300, 150)
self.setWindowTitle('简易计算器')
if __name__ =='__main__':
app = QApplication(sys.argv)
demo = WinForm()
demo.show()
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] 注意普通参数与*和**参数公用的情况,一般将*和**参数放在参数列表最后。
界面展示:
![](https://img.haomeiwen.com/i9740787/cb40afb7a508d559.png)