Best Python code snippet using pypom_form_python
printer.py
Source:printer.py
1# -*- encoding = utf-8 -*-2# @Time : 2022-08-04 21:553# @Author : Levitan4# @File : printer.py5# @Software : PyCharm6import abc7from math import ceil8from .setter import *9from . import color10# æ½è±¡æå°å¨ç±»11class AbstractPrinter(abc.ABC):12 def __init__(self):13 self._setter: AbstractSetter = None # ä¿åæå°å¨çé
ç½®å¨14 # 设置æå°å¨çé
ç½®å¨15 @abc.abstractmethod16 def setSetter(self, setter: AbstractSetter):17 pass18 # å¤ææå°å¨ç设置å¨æ¯å¦ä¸ºç©º19 # å¦æ设置å¨ä¸ä¸ºç©ºåä»ä¹é½ä¸åï¼å¦æ为空åå建ä¸ä¸ªé»è®¤ç设置å¨20 # å
·ä½æå°å¨éè¦ä»ä¹è®¾ç½®å¨ååç±»å®ç°21 @abc.abstractmethod22 def _isSetterNone(self):23 pass24 # å°ä¼ å
¥çæ°æ®è¿è¡é¢å¤ç25 @abc.abstractmethod26 def _preprocessing(self, data):27 pass28 # å°æ°æ®è¾åº29 @abc.abstractmethod30 def _printOut(self, data):31 pass32 # éç½®å±æ§33 @abc.abstractmethod34 def _resetProperties(self):35 pass36 # æ¯ä¸ªæå°å¨çå
¥å£37 # 该æ¹æ³è§å®äºæå°å¨ä¸æ¹æ³è°ç¨ç顺åº38 def print(self, data=None):39 self._isSetterNone()40 data = self._preprocessing(data)41 self._printOut(data)42 self._resetProperties()43 # è·åå符çæ¾ç¤ºå®½åº¦44 @staticmethod45 def _getCharWidth(char):46 o = ord(char)47 widths = [48 (126, 1), (159, 0), (687, 1), (710, 0), (711, 1),49 (727, 0), (733, 1), (879, 0), (1154, 1), (1161, 0),50 (4347, 1), (4447, 2), (7467, 1), (7521, 0), (8369, 1),51 (8426, 0), (9000, 1), (9002, 2), (11021, 1), (12350, 2),52 (12351, 1), (12438, 2), (12442, 0), (19893, 2), (19967, 1),53 (55203, 2), (63743, 1), (64106, 2), (65039, 1), (65059, 0),54 (65131, 2), (65279, 1), (65376, 2), (65500, 1), (65510, 2),55 (120831, 1), (262141, 2), (1114109, 1),56 ]57 if o == 0xe or o == 0xf:58 return 059 for num, wid in widths:60 if o <= num:61 return wid62 return 163 # è·åå符串çæ¾ç¤ºå®½åº¦64 def _getStringWidth(self, string):65 width = 066 for char in string:67 width += self._getCharWidth(char)68 return width69# è¡¨æ ¼æå°å¨70class TablePrinter(AbstractPrinter):71 # é»è®¤åå
æ ¼å®½åº¦72 _defaultGridWidth = 573 def __init__(self) -> None:74 super().__init__()75 self._tableColumnWidth = [] # è¡¨æ ¼ä¸æ¯åç宽度76 self._dataWidths: list[list]77 self._line: str78 self._xMax: int79 self._yMax: int80 self._head: list81 self._headWidths: list82 def setSetter(self, setter: TableSetter):83 self._setter = setter84 def _isSetterNone(self):85 if self._setter is not None:86 return87 self._setter = TableSetter()88 def _preprocessing(self, dataList):89 """90 å°æ°æ®æ åå91 """92 # è·åæ°æ®ä¸çæ大è¡çå
ç´ ä¸ªæ°93 standardKey = 0 # ç¨äºæ è®°æ°æ®æ¯å¦æ¯æ åçï¼å¤§äºä¸è¡¨ç¤ºä¸æ å94 maxRowLength = 0 # ä¿åæ°æ®ä¸å
ç´ æå¤çè¡çå
ç´ ä¸ªæ°95 for row in dataList:96 rowLength = len(row)97 if rowLength > maxRowLength:98 maxRowLength = rowLength99 if rowLength != maxRowLength:100 standardKey += 1101 if standardKey > 1:102 # è¡¥å
¨æ°æ®103 for index in range(len(dataList)):104 differ = maxRowLength - len(dataList[index])105 dataList[index] += ["" for _ in range(differ)]106 """107 åæ°æ®ä¸æ·»å åºå·ï¼è¿ä¸æ¥ä¹åè¡¨æ ¼çé¿å®½å°±ä¸ä¼åäº108 """109 if self._setter.autoOrdNumber:110 starNumber = self._setter.ordNumberStart111 step = self._setter.ordNumberStep112 title = self._setter.ordNumberName113 hasHead = self._setter.hasHead114 # æ·»å å段å115 start: int # å¼å§æ·»å ä½ç½®116 if hasHead:117 start = 1118 dataList[0].insert(0, title)119 else:120 start = 0121 for i in range(start, len(dataList)):122 dataList[i].insert(0, starNumber)123 starNumber += step124 if not self._setter.isAutoColumnWidth():125 shapeList = self._tableColumnWidth126 numberWidth = self._getStringWidth(str(starNumber))127 if numberWidth <= 5:128 shapeList.insert(0, 5)129 else:130 shapeList.insert(0, numberWidth)131 self._tableColumnWidth = shapeList132 self._xMax = len(dataList[0])133 self._yMax = len(dataList)134 """135 讲è¶
è¿å°è¶
è¿ç¨æ·æå®é¿åº¦çæ°æ®æ¹ä¸ºçç¥æ¾ç¤º136 """137 widths = [[0 for _ in range(self._xMax)] for _ in range(self._yMax)]138 tableWidths = [0 for _ in range(self._xMax)]139 # æåè¿è¡æ«æ140 for x in range(self._xMax):141 for y in range(self._yMax):142 dataList[y][x] = str(dataList[y][x]) # å°æææ°æ®é½è½¬ä¸ºå符串形143 if self._setter.isAutoColumnWidth():144 # èªå¨çæè¡¨æ ¼å½¢ç¶145 widths[y][x] = self._getStringWidth(dataList[y][x])146 if widths[y][x] > tableWidths[x]:147 tableWidths[x] = widths[y][x]148 else:149 # è¿è¡çç¥æ¾ç¤ºæä½150 if self._getStringWidth(dataList[y][x]) > self._tableColumnWidth[x]:151 strItem = dataList[y][x]152 while self._getStringWidth(strItem) + 3 > self._tableColumnWidth[x]:153 strItem = strItem[:len(strItem) // 2]154 dataList[y][x] = strItem + "..."155 widths[y][x] = self._getStringWidth(dataList[y][x])156 self._dataWidths = widths157 if self._setter.isAutoColumnWidth():158 self._tableColumnWidth = tableWidths159 """160 å¦ææ表头就å°è¡¨å¤´æååºæ¥161 """162 if self._setter.hasHead:163 self._head = dataList[0]164 self._headWidths = self._dataWidths[0]165 dataList = dataList[1:]166 self._dataWidths = self._dataWidths[1:]167 self._yMax -= 1168 self._createLine()169 return dataList170 # æå°è¡¨æ ¼171 def _printOut(self, dataList):172 # è·åé
置信æ¯173 splitChar = self._setter.splitChar174 tableShap = self._tableColumnWidth175 margin_left = self._setter.margin_left176 margin_right = self._setter.margin_right177 abreastTableNumber = self._setter.abreastTableNumber178 tableSplitChar = " " * self._setter.tableSplitWidth179 hasHead = self._setter.hasHead180 step = ceil(self._yMax / abreastTableNumber) # 计ç®ä¸æ¥é¿181 tables = []182 # éè¦æ¾ç¤ºçè¡¨æ ¼æ°å°æ°æ®åçä¿åå° tables ä¸183 for i in range(step):184 item = dataList[i::step]185 # å¤ææ°æ®æ¯å¦å¤186 # å¦æä¸å¤åè¡¥å
空æ°æ®ï¼å¹¶ä¸å¨_dataWidthsä¸æ·»å ä¸å¯¹åºæ°æ®ä½ç½®ç宽度187 if len(item) < abreastTableNumber:188 for n in range(abreastTableNumber - len(item)):189 item.append(["" for _ in range(self._xMax)])190 self._dataWidths.append([0 for _ in range(self._xMax)])191 tables.append(item)192 headColor = self._setter.headColor193 bodyColor = self._setter.bodyColor194 try:195 headColorize = getattr(color, headColor)196 bodyColorize = getattr(color, bodyColor)197 except AttributeError:198 raise Exception("ä¼ å
¥çé¢è²åæ°é误ï¼color.pyä¸æ²¡æå为 {} æ {} çå½æ°".format(headColor, bodyColor))199 # æå°è¡¨å¤´200 if hasHead:201 heads = []202 for t in range(abreastTableNumber):203 head = splitChar204 for cIndex in range(len(self._head)):205 if self._setter.alignment in "lL":206 spaceBefore = " " * margin_left207 spaceAfter = " " * (tableShap[cIndex] - self._headWidths[cIndex] + margin_right)208 elif self._setter.alignment in "rR":209 spaceBefore = " " * (tableShap[cIndex] - self._headWidths[cIndex] + margin_left)210 spaceAfter = " " * margin_right211 elif self._setter.alignment in "cC":212 spaceCount = tableShap[cIndex] - self._headWidths[cIndex]213 start = spaceCount // 2214 end = spaceCount - start215 spaceBefore = " " * (start + margin_left)216 spaceAfter = " " * (end + margin_right)217 else:218 raise Exception("é
ç½®çè¡¨æ ¼å¯¹é½æ¹å¼'{}'æ¯é误ç".format(self._setter.alignment))219 head += spaceBefore + self._head[cIndex] + spaceAfter + splitChar220 heads.append(head)221 print(headColorize(self._line))222 print(headColorize(tableSplitChar.join(heads)))223 # æå°è¡¨æ ¼ä¸»ä½224 for rIndex in range(len(tables)):225 rowList = []226 for tIndex in range(len(tables[rIndex])):227 row = splitChar228 for cIndex in range(len(tables[rIndex][tIndex])):229 if self._setter.alignment in "lL":230 spaceBefore = " " * margin_left231 spaceAfter = " " * (tableShap[cIndex] - self._dataWidths[tIndex * step + rIndex][cIndex] + margin_right)232 elif self._setter.alignment in "rR":233 spaceBefore = " " * (tableShap[cIndex] - self._dataWidths[tIndex * step + rIndex][cIndex] + margin_left)234 spaceAfter = " " * margin_right235 elif self._setter.alignment in "cC":236 spaceCount = tableShap[cIndex] - self._dataWidths[tIndex * step + rIndex][cIndex]237 start = spaceCount // 2238 end = spaceCount - start239 spaceBefore = " " * (start + margin_left)240 spaceAfter = " " * (end + margin_right)241 else:242 raise Exception("é
ç½®çè¡¨æ ¼å¯¹é½æ¹å¼'{}'æ¯é误ç".format(self._setter.alignment))243 row += spaceBefore + tables[rIndex][tIndex][cIndex] + spaceAfter + splitChar244 # å ä¸è¡¨æ ¼ä¹é´çåå²ç¬¦245 rowList.append(row)246 print(bodyColorize(self._line))247 print(bodyColorize(tableSplitChar.join(rowList)))248 print(bodyColorize(self._line))249 def _resetProperties(self):250 self._tableColumnWidth.clear()251 self._dataWidths.clear()252 self._line = None253 self._xMax = None254 self._yMax = None255 self._head = None256 self._headWidths = None257 # æå¨è®¾ç½®è¡¨æ ¼åå
æ ¼ç宽度258 def setTableColWidth(self, tableColWidth):259 # æ£æµåºå
¥åæ°æ¯å¦ç¬¦åæ å260 for i in range(len(tableColWidth)):261 if tableColWidth[i] < 3:262 raise Exception("è¡¨æ ¼å宽ä¸ççå
ç´ çå¼ä¸è½å°äº3ï¼å½å{}个å
ç´ çå¼ä¸º{}".format(i + 1, tableColWidth[i]))263 self._tableColumnWidth = tableColWidth264 self._setter.autoColumnWidth = False265 # çæè¡¨æ ¼çè¾¹æ¡çº¿266 def _createLine(self):267 # è·åé
置信æ¯268 turnChar = self._setter.turnChar269 borderChar = self._setter.borderChar270 margin_left = self._setter.margin_left271 margin_right = self._setter.margin_right272 tableSplitChar = self._setter.tableSplitWidth * " "273 abreastTableNumber = self._setter.abreastTableNumber274 row = []275 for tIndex in range(abreastTableNumber):276 line = turnChar277 for i in self._tableColumnWidth:278 line += borderChar * (i + margin_left + margin_right) + turnChar279 row.append(line)280 self._line = tableSplitChar.join(row)281# æ¶æ¯æå°å¨282class MsgPrinter(AbstractPrinter):283 def __init__(self):284 super().__init__()285 self._maxSize = 0286 self._msgWidths = []287 def setSetter(self, setter: MsgSetter):288 self._setter = setter289 def _isSetterNone(self):290 if self._setter is not None:291 return292 self._setter = MsgSetter()293 def _preprocessing(self, msg: str) -> list:294 msgList = msg.split("\n")295 for i in msgList:296 size = super()._getStringWidth(i)297 self._msgWidths.append(size)298 if size > self._maxSize:299 self._maxSize = size300 return msgList301 def _printOut(self, msgList: list):302 horizontalSymbol = self._setter.horizontalSymbol303 verticalSymbol = self._setter.verticalSymbol304 marginLeft = self._setter.margin_left305 marginRight = self._setter.margin_right306 colorType = self._setter.color307 try:308 colorize = getattr(color, colorType)309 except AttributeError:310 raise Exception("ä¼ å
¥çé¢è²åæ°é误ï¼color.pyä¸æ²¡æå为 {} çå½æ°".format(colorType))311 line = horizontalSymbol * (marginLeft + self._maxSize + marginRight + 2)312 print(colorize(line))313 for index in range(len(msgList)):314 front = verticalSymbol + " " * marginLeft315 behind = " " * (self._maxSize - self._msgWidths[index] + marginRight) + verticalSymbol316 print(colorize(front + msgList[index] + behind))317 print(colorize(line))318 def _resetProperties(self):319 self._maxSize = 0320 self._msgWidths.clear()321class SplitPrinter(AbstractPrinter):322 def __init__(self):323 super().__init__()324 def setSetter(self, setter: SplitSetter):325 self._setter = setter326 def _isSetterNone(self):327 if self._setter is not None:328 return329 self._setter = SplitSetter()330 def _preprocessing(self, data):331 return data332 def _printOut(self, length):333 length = self._setter.length334 symbol = self._setter.symbol335 colorType = self._setter.color336 frontNewlineNumber = self._setter.frontNewlineNumber337 behindNewlineNumber = self._setter.behindNewlineNumber338 message = self._setter.message339 lSymbol = self._setter.leftmostSymbol340 rSymbol = self._setter.rightmostSymbol341 try:342 colorize = getattr(color, colorType)343 except AttributeError:344 raise Exception("ä¼ å
¥çé¢è²åæ°é误ï¼color.pyä¸æ²¡æå为 {} çå½æ°".format(colorType))345 bNumber = length // 2346 aNumber = length - bNumber347 line = "\n"*frontNewlineNumber + lSymbol + symbol*bNumber + message + symbol*aNumber + rSymbol + "\n"*behindNewlineNumber348 print(colorize(line))349 def _resetProperties(self):...
enums.py
Source:enums.py
...5PORTAL_SERVICES_PATTERN = 'http*://*/sharing/servers/*/rest/services/*'6VERSION = '1.1'7PACKAGE_NAME = 'restapi'8USER_AGENT = '{} (Python)'.format(PACKAGE_NAME)9def _setter(lst=[]):10 if isinstance(lst, dict):11 return munchify(lst)12 d = {}13 if isinstance(lst, list):14 for i in lst:15 if isinstance(i, dict):16 for k,v in six.iteritems(i):17 d[k] = v18 elif isinstance(i, six.string_types):19 d[i] = i20 return munchify(d)21geometry = _setter([22 {23 'type': 'geometryType',24 'precision': 'geometryPrecision',25 'polygon': 'esriGeometryPolygon',26 'point': 'esriGeometryPoint',27 'polyline': 'esriGeometryPolyline',28 'multipoint': 'esriGeometryMultipoint',29 'envelope': 'esriGeometryEnvelope',30 'extent': _setter([31 'xmax',32 'ymax',33 'xmin',34 'ymin',35 {36 'initial': 'initialExtent',37 'full': 'fullExtent'38 }39 ])40 }, {41 'relationships': {42 'intersect': 'esriSpatialRelIntersects',43 'contains': 'esriSpatialRelContains',44 'crosses': 'esriSpatialRelCrosses',45 'envelopeIntersects': 'esriSpatialRelEnvelopeIntersects',46 'overlaps': 'esriSpatialRelOverlaps',47 'touches': 'esriSpatialRelTouches',48 'within': 'esriSpatialRelWithin',49 'relation': 'esriSpatialRelRelation'50 }51 },52 'null',53 'spatialReference',54 'rings',55 'paths',56 'points',57 'curveRings',58 'curvePaths',59 'x',60 'y',61])62admin = _setter([63 'user',64 'adminUrl',65 'permission',66 'permissions',67 'esriEveryone',68 'isAllowed',69 'principal',70 'privilege',71 'rolename',72 'roles',73 'users',74 'addToDefinition',75 'deleteFromDefinition',76 'updateDefinition',77])78agol = _setter([79 {80 'urls': {81 'base': 'www.arcgis.com',82 'sharingRest': 'https://www.arcgis.com/sharing/rest',83 'tokenService': 'https://www.arcgis.com/sharing/rest/generateToken',84 'self': 'https://www.arcgis.com/sharing/portals/self',85 'orgMaps': '.maps.arcgis.com'86 }87 },88 'isAgol',89 'isPortal',90 'isAdmin',91 'portalUser',92 'fullName',93 'user',94 'urlKey',95])96spatialReference = _setter([97 'spatialReference',98 'wkid',99 'wkt'100])101service = _setter([102 'extent',103 'initialExtent',104 'fullExtent',105 'spatialReference',106 'supportsTruncate',107 'truncate'108])109# geometryLookup = munchify({v: k for k,v in six.iteritems(geometry) if k})110fields = _setter([111 {112 'oid': 'esriFieldTypeOID',113 'shape': 'esriFieldTypeGeometry',114 'globalId': 'esriFieldTypeGlobalID',115 'text': 'esriFieldTypeString',116 'string': 'esriFieldTypeString', #alias117 'date': 'esriFieldTypeDate',118 'float': 'esriFieldTypeSingle',119 'double': 'esriFieldTypeDouble',120 'short': 'esriFieldTypeSmallInteger',121 'long': 'esriFieldTypeInteger',122 'guid': 'esriFieldTypeGUID',123 'raster': 'esriFieldTypeRaster',124 'blob': 'esriFieldTypeBlob',125 'sql': 'sqlType',126 'sqlOther': 'sqlTypeOther',127 'shapeToken': 'SHAPE@',128 'oidToken': 'OID@',129 'oidField': 'objectIdFieldName',130 'globalId': 'globalIdFieldName',131 }, {132 'lookup': {133 'esriFieldTypeDate': 'DATE',134 'esriFieldTypeString': 'TEXT',135 'esriFieldTypeSingle': 'FLOAT',136 'esriFieldTypeDouble': 'DOUBLE',137 'esriFieldTypeSmallInteger': 'SHORT',138 'esriFieldTypeInteger': 'LONG'139 },140 'skip': {141 'esriFieldTypeRaster': 'RASTER',142 'esriFieldTypeBlob': 'BLOB'143 }144 },145 'nullable',146 'editable',147 'length',148 'domain',149])150domain = _setter([151 'codedValues',152 'code',153 'range',154 {155 'codedUpper': 'CODED',156 'rangeUpper': 'RANGE'157 }158])159headers = _setter(160 { 'referer': 'Referer' },161)162cookies = _setter([163 'agstoken'164])165operations = _setter([166 'exportImage'167])168featureSet = _setter([169 'geometry',170 'attributes',171 'displayFieldName',172 'fieldAliases',173 'fields'174])175formats = _setter([176 'json',177 'pjson',178 'geojson',179 'sqlite',180 'kmz',181 'tiff',182 'esriJSON',183 'geoJSON',184])185serviceInfo = _setter([186 'tables',187 'layers',188 'layerDefs',189 'subLayerIds'190])191geocoding = _setter([192 'location',193 'locations',194 'singleLine',195 'langCode',196 'sourceCounty',197 'addresses',198 'numOfResults',199 'candidates',200 'score',201 'address'202])203types = _setter({204 'featureCollection': 'FeatureCollection',205 'featureLayer': 'FeatureLayer',206 'table': 'Table',207 'layer': 'Layer',208})209gpService = _setter([210 {'operations': _setter([211 'submitJob',212 'execute'213 ])},214 'esriExecutionTypeSynchronous',215 'esriExecutionTypeAsynchronous'216])217service = _setter([218 'supportsCalculate',219])220params = _setter([221 'f',222 'json',223 'pjson',224 'username',225 'client',226 'expiration',227 'token',228 'fields',229 'inSR',230 'outSR',231 'where',232 'time',233 'objectIds',234 'outFields',235 'geometry',236 'geometries',237 'units',238 'adds',239 'updates',240 'deletes',241 'bboxSR',242 'bbox',243 'bufferSR',244 'size',245 'format',246 'dpi',247 'unionResults',248 'currentVersion',249 'dataFormat',250 'relationParam',251 'maxRecordCount',252 'returnZ',253 'returnM',254 'returnTrueCurves',255 'returnIdsOnly',256 'resultRecordCount'257 'returnAttachments',258 'hasAttachments',259 'attachmentIds',260 'attachmentId',261 'definitionExpression',262 'supportsApplyEditsWithGlobalIds',263 'returnAttachmentsDataByUrl',264 'returnCatalogItems',265 'rollbackOnFailure',266 'useGlobalIds',267 'async',268 'syncModel',269 'unit',270 'distanceUnit',271 'distances',272 'transformation',273 'transformForward',274 'geodesic',275 'transportType',276 'category',277 'extentOfInterest'278])279response = _setter([280 'summary',281 'results',282 'attachment',283 'attachments',284 'attachmentInfos',285 'statusUrl',286 'success',287 'status',288 'error',289 'message',290 'globalIdField',291 'objectIdField',292 'parentGlobalId'293 'failedOIDs',294 'prototype',295 'templates',296 'description',297 'sqlite',298 'records',299 'addAttachmentResult',300 'addResults',301 'updateResults',302 'deleteResults',303 'addAttachmentResult',304 'updateAttachmentResult',305 'deleteAttachmentResults',306 'relatedRecordGroups',307 'relationships',308 'relatedRecords',309 'relationshipId',310 'updloadId',311 'contentType',312 'data',313 'location',314 'locations'315])316raster = _setter([317 'adjustAspectRatio',318 'noData',319 'noDataInterpretation',320 'esriNoDataMatchAll',321 'esriNoDataMatchAny',322 'mosaicRule',323 'renderingRule',324 'interpolation',325 'compression',326 'compressionQuality',327 'bandIds',328 'size',329 'imageSR',330 'transparent',331 {332 'bilinearInterpolation': 'RSP_BilinearInterpolation',333 'operations': {334 'plus': 1,335 'minus': 2,336 'multiply': 3,337 'clipInside': 1,338 'clipOutside': 2339 }340 }341])342misc = _setter([343 'crs',344 'urlWithToken',345 'proxy'346])347editing = _setter([348 {349 'info': 'editingInfo' ,350 'trackingInfo': 'editorTrackingInfo',351 'changeTracking': 'ChangeTracking'352 },353 'lastEditDate',354])355auth = _setter([356 'username',357 'password',358 'client',359 'expiration',360 'expires',361 'token',362 'referer',363 # spelling confusion alias364 {365 'referrer': 'referer',366 'info': 'authInfo'367 },368 'requestip',369 'tokenServicesUrl',...
build_calculator_view.py
Source:build_calculator_view.py
1from tkinter import ttk, constants234class Builder:5 def __init__(self, frame, handle_home, setter, expression):6 self._frame = frame7 self._handle_home = handle_home8 self.equ = expression9 self._setter = setter1011 def _expression(self):12 expression = ttk.Label(13 master=self._frame,14 textvariable=self.equ,15 background="white"16 )17 expression.grid(columnspan=6, ipadx=100, sticky=constants.W)1819 def _numbers(self):20 num_1 = ttk.Button(21 master=self._frame,22 text="1",23 command=lambda: self._setter.set_press(1)24 )25 num_1.grid(row=1, column=0)26 num_2 = ttk.Button(27 master=self._frame,28 text="2",29 command=lambda: self._setter.set_press(2)30 )31 num_2.grid(row=1, column=1)32 num_3 = ttk.Button(33 master=self._frame,34 text="3",35 command=lambda: self._setter.set_press(3)36 )37 num_3.grid(row=1, column=2)38 num_4 = ttk.Button(39 master=self._frame,40 text="4",41 command=lambda: self._setter.set_press(4)42 )43 num_4.grid(row=1, column=3)44 num_5 = ttk.Button(45 master=self._frame,46 text="5",47 command=lambda: self._setter.set_press(5)48 )49 num_5.grid(row=1, column=4)50 num_6 = ttk.Button(51 master=self._frame,52 text="6",53 command=lambda: self._setter.set_press(6)54 )55 num_6.grid(row=2, column=0)56 num_7 = ttk.Button(57 master=self._frame,58 text="7",59 command=lambda: self._setter.set_press(7)60 )61 num_7.grid(row=2, column=1)62 num_8 = ttk.Button(63 master=self._frame,64 text="8",65 command=lambda: self._setter.set_press(8)66 )67 num_8.grid(row=2, column=2)68 num_9 = ttk.Button(69 master=self._frame,70 text="9",71 command=lambda: self._setter.set_press(9)72 )73 num_9.grid(row=2, column=3)74 num_0 = ttk.Button(75 master=self._frame,76 text="0",77 command=lambda: self._setter.set_press(0)78 )79 num_0.grid(row=2, column=4)8081 def _operations(self):82 add_button = ttk.Button(83 master=self._frame,84 text="+",85 command=lambda: self._setter.set_press("+")86 )87 add_button.grid(row=3, column=0)88 subtract_button = ttk.Button(89 master=self._frame,90 text="-",91 command=lambda: self._setter.set_press("-")92 )93 subtract_button.grid(row=3, column=1)94 multiply_button = ttk.Button(95 master=self._frame,96 text="*",97 command=lambda: self._setter.set_press("*")98 )99 multiply_button.grid(row=3, column=2)100 divide_button = ttk.Button(101 master=self._frame,102 text="/",103 command=lambda: self._setter.set_press("/")104 )105 divide_button.grid(row=3, column=3)106 decimal_button = ttk.Button(107 master=self._frame,108 text=",",109 command=lambda: self._setter.set_press(".")110 )111 decimal_button.grid(row=3, column=4)112 equal_button = ttk.Button(113 master=self._frame,114 text="=",115 command=lambda: self._setter.set_equation()116 )117 equal_button.grid(row=2, column=5)118 power_button = ttk.Button(119 master=self._frame,120 text=f"x**",121 command=lambda: self._setter.set_press("**")122 )123 power_button.grid(row=4, column=0)124 sqrt_button = ttk.Button(125 master=self._frame,126 text="sqrt",127 command=lambda: self._setter.set_press("sqrt(")128 )129 sqrt_button.grid(row=4, column=1)130 log_button = ttk.Button(131 master=self._frame,132 text="ln",133 command=lambda: self._setter.set_press("log(")134 )135 log_button.grid(row=4, column=2)136 sin_button = ttk.Button(137 master=self._frame,138 text="sin",139 command=lambda: self._setter.set_press("sin(")140 )141 sin_button.grid(row=5, column=0)142 cos_button = ttk.Button(143 master=self._frame,144 text="cos",145 command=lambda: self._setter.set_press("cos(")146 )147 cos_button.grid(row=5, column=1)148 tan_button = ttk.Button(149 master=self._frame,150 text="tan",151 command=lambda: self._setter.set_press("tan(")152 )153 tan_button.grid(row=5, column=2)154 neper_button = ttk.Button(155 master=self._frame,156 text="e",157 command=lambda: self._setter.set_press("e")158 )159 neper_button.grid(row=5, column=3)160 pi_button = ttk.Button(161 master=self._frame,162 text="Ï",163 command=lambda: self._setter.set_press("Ï")164 )165 pi_button.grid(row=5, column=4)166 AC_button = ttk.Button(167 master=self._frame,168 text="AC",169 command=lambda: self._setter.set_clear_expression()170 )171 AC_button.grid(row=1, column=5)172 factorial_button = ttk.Button(173 master=self._frame,174 text="factorial",175 command=lambda: self._setter.set_press("factorial(")176 )177 factorial_button.grid(row=4, column=3)178 brackets_button = ttk.Button(179 master=self._frame,180 text="( )",181 command=lambda: self._setter.set_brackets()182 )183 brackets_button.grid(row=4, column=4)184 left_bracket_button = ttk.Button(185 master=self._frame,186 text="(",187 command=lambda: self._setter.set_press("(")188 )189 left_bracket_button.grid(row=4, column=5)190 ans_button = ttk.Button(191 master=self._frame,192 text="ans",193 command=lambda: self._setter.set_ans()194 )195 ans_button.grid(row=3, column=5)196 home_button = ttk.Button(197 master=self._frame,198 text="Home",199 command=self._handle_home200 )
...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!