账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    为什么PyQt5 循环中函数传入参数总是最后一个 i 值?
    50
    0

    关键代码如下:

    class Example(QWidget):
    
        def __init__(self):
    
            super().__init__()
            self.initUI()
    
        def initUI(self):
    
            self.setGeometry(300, 300, 500, 800)
            self.setWindowTitle('Caculation')
            # self.setWindowIcon(QIcon('xdbcb8.ico'))
            self.resultText = QLineEdit('0', self)
            self.resultText.setGeometry(20, 30, 400, 50)
            self.resultText.setEnabled(False)
    
            for i in range(3):
                for j in range(3):
                    num = i * 3 + j + 1
                    btn_num = QPushButton(str(num), self)
                    btn_num.setGeometry(50 + j * 50, 150 + i * 50, 70, 30)
                    print(num)
                    btn_num.clicked.connect(lambda: self.showMessage(num))
    
            self.show()
    
        def showMessage(self, num):
            print(':' + str(num))
            self.resultText.setText(str(num))
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        ex = Example()
        sys.exit(app.exec_())

    问题就是 showMessage函数输出的 num 变量总是9,需要的效果根据不同的按钮输出不同的数字。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 繁华落尽与君老 普通会员 1楼

      在PyQt5中,函数参数的顺序取决于你如何定义函数。默认情况下,函数参数按照在函数定义时的顺序传递。

      如果你使用的是参数默认值,那么函数的参数顺序不会改变。例如:

      python def my_function(arg1, arg2): pass

      在这个例子中,arg1arg2会在函数被调用时作为参数传递。

      如果你使用的是默认参数列表,那么函数的参数顺序会根据你在函数定义时添加的参数列表改变。例如:

      python def my_function(arg1, arg2, arg3): pass

      在这个例子中,arg3会在函数被调用时作为参数传递。

      如果你在函数定义时使用了*args**kwargs,那么函数的参数顺序会根据这些元组或关键字的数量改变。例如:

      python def my_function(*args, **kwargs): pass

      在这个例子中,**kwargs会作为参数传递。

      总之,Python中函数参数的顺序是根据你在函数定义时添加的参数列表改变的。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部