37,719
社区成员
发帖
与我相关
我的任务
分享
import sys
from PyQt5.QtWidgets import (QWidget, QApplication, QGridLayout,
QLineEdit, QPushButton)
class CalcUi(QWidget):
def __init__(self):
QWidget.__init__(self)
self.generalDict = {}
self.setWindowTitle("Calc")
self.initUi()
def initUi(self):
uiDict = {'Row1': ('7', '8', '9', '/'),
'Row2': ('4', '5', '6', '*'),
'Row3': ('1', '2', '3', '+'),
'Row4': ('-', '0', '.', '='),
'Row5': ('c' ),
}
qGridLayout = QGridLayout(self)
inputLine = QLineEdit()
qGridLayout.addWidget(inputLine, 0, 0, 1, 4)
for line in uiDict:
for labelIndex in range(len(uiDict[line])):
btn = QPushButton(uiDict[line][labelIndex])
btn.setToolTip(btn.text())
self.generalDict[btn] = btn.text()
if len(uiDict[line]) == 1:
qGridLayout.addWidget(btn, 5, 0, 1, 4)
else:
qGridLayout.addWidget(btn)
for func, label in self.generalDict.items():
# 这个位置点击事件后,打印出来的w类型为bool类型
func.clicked.connect(lambda w=func:print(type(w)))
if __name__ == '__main__':
app = QApplication(sys.argv)
win = CalcUi()
win.show()
sys.exit(app.exec_())
if __name__ == '__main__':
add = lambda x=5: print(type(x))
add() # 这个位置打印出来的x的类型为int型,符合原x类型