关于PyQt5的问题?

望向缸外的大眼睛 望向缸外的大眼睛 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
先上代码(刚刚测试了下PyQt能否和tkinter一样使用lambda, 发现了一个不理解的问题, 代码中打印出的w为bool类型,这是什么情况?):
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_())



在一个空白的python文件中测试了下,就没发现类型被私自转换的现象,上代码:
if __name__ == '__main__':
add = lambda x=5: print(type(x))
add() # 这个位置打印出来的x的类型为int型,符合原x类型
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部